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