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

John
johnclarkeAsked:
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)


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

On the JTable object call the

setAutoResizeMode(SwingConstants.AUTO_RESIZE_OFF);

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

Cheers,
  Nik
0
 
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.

John
0
 
WilliamCHallCommented:
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.setRequestFocusEnabled(false);
        tblResults.setModel(new DefaultTableModel());
          if( tblResults.getModel() instanceof DefaultTableModel )
          {
            ((DefaultTableModel)tblResults.getModel()).setColumnIdentifiers(columnNames);
            int cols = tblResults.getModel().getColumnCount();
          }
        tblResults.setPreferredScrollableViewportSize(new Dimension(200, 200 ));

        //Add table to scroll pane

        JViewport jv = new JViewport();
        tblResults.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        jv.setView(tblResults);
        if (tblResults != null) {
          scpResultsTable.setViewport(jv);
          scpResultsTable.getViewport().add(tblResults, null);
        }
      TableColumn column = tblResults.getColumnModel().getColumn(0);
      column.setPreferredWidth(160);
  }
0
All Courses

From novice to tech pro — start learning today.