JTableの行を全削除
Total: 37257
, Today: 1
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
JTable
のモデルから、カラムヘッダの状態は変更せず、すべての行を一括で削除します。
Screenshot
Advertisement
サンプルコード
button.addActionListener(new AbstractAction("clear") {
@Override public void actionPerformed(ActionEvent e) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.setRowCount(0);
}
});
View in GitHub: Java, Kotlin解説
TableModel
がDefaultTableModel
を継承している場合、model.setRowCount(0)
ですべての行が削除可能- 空の
TableModel
をJTable
に設定すれば行の全削除を行うことが可能だが、ヘッダモデルの再作成が発生しカラム幅や順番などが初期化されてしまうJTable#setAutoCreateColumnsFromModel(false)
とカラムをモデルから自動生成しないようにしておけばTableModel
を入れ替えても列幅などは保存されるtable.setAutoCreateColumnsFromModel(false); table.setModel(new DefaultTableModel());
DefaultTableModel
を継承していない場合は、モデルに以下の要領(詳細はDefaultTableModel.java
のソースを参照)で行を全削除するメソッドを実装する必要があるpublic void clear() { // 以下のdataVectorは実装に合わせて変更する int size = dataVector.size(); dataVector.clear(); fireTableRowsDeleted(0, size - 1); // fireTableDataChanged(); }
参考リンク
- JTableの行を追加、削除
- JTableのセルにJButtonを追加して行削除
- JDK-8032874 ArrayIndexOutOfBoundsException in JTable while clearing data in JTable - Java Bug System
- コメントの
ArrayIndexOutOfBoundsException
と似ている?JDK-8032874
の件は修正済み
- コメントの