これは簡単に解決できるはずですが、私にはわかりません。次の JPanel には、ScrollPane (Table を含む) と Button が含まれているだけです。
テーブルの実際の列幅を知る必要があります。ボタンをクリックすると正しい値が表示されますが、内部呼び出しはすべての列に対して 75 (デフォルト値) を出力するだけです。ここのコードで正しい結果を得るにはどうすればよいですか?
public MyPanel() { //JPanel
setLayout(new BorderLayout());
this.setBounds(0, 0, 1000, 250);
table = new JTable(5,6);
JScrollPane sp = new JScrollPane(table);
this.add(sp, BorderLayout.CENTER);
JButton b = new JButton("Test");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
displayWidths(); //DOES WORK!
}
});
this.add(b, BorderLayout.SOUTH);
displayWidths(); //DOES NOT WORK!
}
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());
}
}