2012-09-23 70 views
1

在我的應用程序中,我使用JTable以及一些可調整大小的列。最後,我希望應用程序能夠存儲顯示的列的大小。JTable中TableColumn的寬度

我的問題是,即使我手動調整列大小,getWidth()函數始終返回75(默認值),無論列的實際大小。如果我用調試器查看TableColumn對象,它的最小尺寸是15,最大尺寸是2147483648,首選尺寸是75,尺寸是75.但顯示的尺寸顯然不是75!

如何獲得我的色譜柱的實際大小?

用於獲取寬度代碼:

 for(i=0;i<TableOpérations.getColumnCount();i++){ 
       tc=TableOpérations.getColumn(TableOpérations.getColumnName(i)); 

       width=tc.getWidth(); 
    } 
+0

您使用了GUI Builer,否則沒有問題 – mKorbel

+0

請出示的SSCCE所以我們可以重現你_really_做:-) – kleopatra

回答

2

我沒有看到你所看到的行爲。下面的程序每次按下按鈕時顯示正確的寬度。您必須顯示另一個表格或表格列模型的列的寬度。

public class TableColumnTest extends JFrame { 

    private JTable table; 

    public TableColumnTest() { 
     JPanel p = new JPanel(); 
     p.setLayout(new BorderLayout()); 
     table = new JTable(5, 4); 
     p.add(new JScrollPane(table), BorderLayout.CENTER); 
     JButton b = new JButton("Test"); 
     b.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       displayWidths(); 
      } 
     }); 
     p.add(b, BorderLayout.SOUTH); 
     add(p); 
     pack(); 
    } 

    private void displayWidths() { 
     for (int i = 0; i < table.getColumnCount(); i++) { 
      TableColumn column = table.getColumnModel().getColumn(i); 
      System.out.println("Width of column " + i + " : " + column.getWidth()); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new TableColumnTest().setVisible(true); 
      } 
     }); 
    } 
} 
+0

哦,不。在我的JInternalFrame中,我有一個JScrollPane,其中包含名爲「TableOpérations」的JTable。就是這樣! – Zelig63

+0

我已經添加了在我的問題中獲取寬度的代碼(請參見上文)。 – Zelig63

+1

該錯誤在別的地方。按Kleopatra的要求提供一個SSCCE。我懷疑你有兩個具有相同變量名的表(一個本地變量和一個實例變量)。但這隻能通過查看代碼來確認。 –