JTableがあり、次のように定義されたテーブルモデルがあります。
javax.swing.table.TableModel dataModel =
new javax.swing.table.DefaultTableModel(data, columns);
tblCompounds.setModel(dataModel);
誰も私がその内容をクリアする方法を知っていますか?それだけで空のテーブルに戻りますか?
最も簡単な方法:
//private TableModel dataModel;
private DefaultTableModel dataModel;
void setModel() {
Vector data = makeData();
Vector columns = makeColumns();
dataModel = new DefaultTableModel(data, columns);
table.setModel(dataModel);
}
void reset() {
dataModel.setRowCount(0);
}
つまり、リセットメソッドは、データの0行を含むようにモデルに指示します。モデルは、適切なデータ変更イベントをテーブルに発行して、テーブルを再構築します。
コンテンツを削除するつもりで、そのセルがそのまま残っている場合:
public static void clearTable(final JTable table) {
for (int i = 0; i < table.getRowCount(); i++) {
for(int j = 0; j < table.getColumnCount(); j++) {
table.setValueAt("", i, j);
}
}
}
すべてのセルを削除するが、ヘッダーを維持する場合:
public static void deleteAllRows(final DefaultTableModel model) {
for( int i = model.getRowCount() - 1; i >= 0; i-- ) {
model.removeRow(i);
}
}
//To clear the Contents of Java JTable
DefaultTableModel dm = (DefaultTableModel) JTable1.getModel();
for (int i = 0; i < dm.getRowCount(); i++) {
for (int j = 0; j < dm.getColumnCount(); j++) {
dm.setValueAt("", i, j);
}
}
いくつかのオプションがあります:
new DefaultTableModel()
を作成しますが、リスナーは必ず再接続してください。model.removeRow(index)
を反復処理して削除します。clear
メソッドを公開します。JTableのすべてのセルをクリアし、新しい空のjTableのようにしたいということだと思います。たとえば、テーブルに40のrawが含まれている場合、次のことができます。
DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
model.setRowCount(0);
model.setRowCount(40);
簡単な方法の1つは、次のオプションを使用することです。
dataModel.setRowCount(0);
dataModelは、コンテンツをクリアするモデルです
ただし、それは最適な解決策ではありません。