Java JTable中TableColumn的宽度

Java JTable中TableColumn的宽度,java,swing,jtable,tablecolumn,Java,Swing,Jtable,Tablecolumn,在我的应用程序中,我使用带有几个可调整大小的列的JTable。在结束时,我希望应用程序存储显示的列的大小 我的问题是,即使我手动调整列的大小,getWidth()函数始终返回75(默认值),而不管列的实际大小如何。如果我使用调试器查看TableColumn对象,它的最小大小是15,最大大小是2147483648,首选大小是75,大小是75。但它的显示尺寸显然不是75 如何获得我的专栏的真实大小 获取宽度的代码: for(i=0;i<TableOpérations.getCo

在我的应用程序中,我使用带有几个可调整大小的列的
JTable
。在结束时,我希望应用程序存储显示的列的大小

我的问题是,即使我手动调整列的大小,
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();
    }

for(i=0;i我看不到您看到的行为。以下程序在每次按下按钮时显示正确的宽度。您必须显示另一个表或表列模型的列宽度

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);
            }
        });
    }
}
公共类TableColumnTest扩展了JFrame{
专用JTable表;
公共表格测试(){
JPanel p=新的JPanel();
p、 setLayout(新的BorderLayout());
表=新的JTable(5,4);
p、 添加(新的JScrollPane(表),BorderLayout.CENTER);
JButton b=新JButton(“测试”);
b、 addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
显示宽度();
}
});
p、 增加(b,南部边界布局);
加(p);
包装();
}
私有void显示宽度(){
对于(int i=0;i
您是否使用了GUI Builer,否则没有问题请显示SSCE,以便我们可以重现您的实际操作:-)没有。在我的JInternalFrame中,我有一个JScrollPane,其中包含名为“TableOpéQuitions”的JTable。就这样!我在我的问题中添加了获取宽度的代码(见上文)。错误在其他地方。按照Kleopatra的要求提供SSCCE。我怀疑您有两个具有相同变量名的表(一个本地变量和一个实例变量)。但这只能通过查看代码来确认。