1

私のアプリケーションでは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();
    }
4

1 に答える 1

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);
            }
        });
    }
}
于 2012-09-23T08:17:34.530 に答える