A question about JTables

Is there anyway to add a JTable to an Applet so that if there are a lot of items on the table it adds a horizontal scroll bar and does not resize all of the columns so that it fits the applets area.  

Also is there any way that I can lock a column so that it stays on the screen even when the user scrolls to columns that are not on the view.  

I would be grateful for all help offered regarding this.

Thanks in advance

Who is Participating?
ovidiucraciunConnect With a Mentor Commented:
I'll answer you to the second question.
It is not posible with a single call ;)
You must build an workaround: When the user srolls you must change the original position the "locked" column
in that way it will be visible.

see this:
public void moveColumn(int column,
                       int targetColumn)

The Applet is a Panel. Add to this panel a JScrollPane, then add to the JSCrollPane the JTable.

On the JTable object call the


I hink this should do it. Tell me if this does not work for your code.

johnclarkeAuthor Commented:
I would like all of the columns to be resized to the width of the largest item in that column.  

I would also like to be able to lock one of the columns so that it is always visible in the view even when I have scrolled all the way to the end of the JTable.

I would be grateful for all advice offered regarding this.

Thanks in advance.

I've created the following method for creating a table that creates scrollbars automatically if the columns become too wide for the scrollpane.  I believe the tblResults.setAutoResizeMode(JTable.AUTO_RESIZE_OFF) line causes this type of action.  As for your second question, I've never done such a thing.

  public void CreateTable() {
      Object[] columnNames= {"Year", "Income", "Expenses", "Cashflow"};

        //Instantiate table
        Table tblResults = new JTable();
        tblResults.setModel(new DefaultTableModel());
          if( tblResults.getModel() instanceof DefaultTableModel )
            int cols = tblResults.getModel().getColumnCount();
        tblResults.setPreferredScrollableViewportSize(new Dimension(200, 200 ));

        //Add table to scroll pane

        JViewport jv = new JViewport();
        if (tblResults != null) {
          scpResultsTable.getViewport().add(tblResults, null);
      TableColumn column = tblResults.getColumnModel().getColumn(0);
All Courses

From novice to tech pro — start learning today.