内容に合った行を持つテーブルに取り組んでいます。新しい行が追加されるたびに、新しく追加された行の高さが自動的に変更されるように、TableModelListener をテーブル モデルにインストールします。ここに私のテストコードがあります:
final DefaultTableModel model = new DefaultTableModel(0, 1);
final JTable table = new JTable(model);
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
// TO DO: replace 100 with the actual preferred height.
table.setRowHeight(e.getFirstRow(), 100);
}
});
JButton button = new JButton("Add Row");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addRow(new String[] {"abc"});
}
});
「行の追加」ボタンをクリックすると、テーブルに新しい行が追加され、高さが 100 ピクセルになると思いますが、機能しません。行の高さは変わりません。奇妙なことに、JTable.setRowHeight
次のように呼び出しをボタンのアクション リスナーに移動すると、メソッドが正しく機能する可能性があります。
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.addRow(new String[] {"abc"});
talbe.setRowHeight(table.getRowCount() - 1, 100);
}
});
テーブルモデルは他の場所から変更できるため、この「ソリューション」に頼ることはできません。私は正しく使用していますTableModelListener
か、それともバグですか?