2010-02-10 55 views
0

我在scrollPane中有一個表。我的桌子上有6列。我想最後2列比其他列寬。但是在設置了列的大小後,垂直滾動條消失了。如果我註釋掉重置列寬的代碼,一切都會恢復正常。誰能告訴我這是什麼問題?非常感謝!!垂直滾動條在調整列寬後消失

我複製了幾個相關dimentions吹:

table.setPreferredScrollableViewportSize(new Dimension(900, 500)); 
feedback = new JScrollPane(table); 
feedback.setMinimumSize(new Dimension(900, 400)); 

代碼來調整列:

TableColumn column = null; 
for (int i = 0; i < 6; i++) { 
    column = table.getColumnModel().getColumn(i); 
    if (i == 4) { 
     column.setPreferredWidth(250); //third column is bigger 
    } else { 
     if (i==5) { 
      column.setPreferredWidth(250); 
     } 
     else { 
      column.setPreferredWidth(100); 
     } 
    } 
} 

回答

1

我無法重現您所描述的問題。它可能與您的佈局有關,或者可能需要Setting the Scroll Bar Policy

import javax.swing.*; 
import javax.swing.table.*; 

public class TablePanel extends JPanel { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame f = new JFrame("JTable"); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.add(new TablePanel()); 
       f.pack(); 
       f.setVisible(true); 
      } 
     }); 
    } 

    public TablePanel() { 
     TableModel dataModel = new MyTableModel(); 
     JTable table = new JTable(dataModel); 
     table.setAutoCreateRowSorter(true); 
     table.getColumnModel().getColumn(0).setPreferredWidth(100); 
     table.getColumnModel().getColumn(1).setPreferredWidth(150); 
     table.getColumnModel().getColumn(2).setPreferredWidth(200); 
     JScrollPane jsp = new JScrollPane(table); 
     this.add(jsp); 
    } 

    private static class MyTableModel extends AbstractTableModel { 

     @Override 
     public int getRowCount() { 
      return 30; 
     } 

     @Override 
     public int getColumnCount() { 
      return 3; 
     } 

     @Override 
     public Object getValueAt(int row, int col) { 
      return Math.pow(row, col + 1); 
     } 

     @Override 
     public Class<?> getColumnClass(int col) { 
      return getValueAt(0, col).getClass(); 
     } 
    } 
}