在我的应用程序中,我使用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();
}
答案 0 :(得分: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);
}
});
}
}