2012-09-23 41 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。我怀疑你有两个具有相同变量名的表(一个本地变量和一个实例变量)。但这只能通过查看代码来确认。 –