web-dev-qa-db-ja.com

jTableの内容をクリアするには?

JTableがあり、次のように定義されたテーブルモデルがあります。

javax.swing.table.TableModel dataModel = 
     new javax.swing.table.DefaultTableModel(data, columns);
tblCompounds.setModel(dataModel);

誰も私がその内容をクリアする方法を知っていますか?それだけで空のテーブルに戻りますか?

16
tom

最も簡単な方法:

//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行を含むようにモデルに指示します。モデルは、適切なデータ変更イベントをテーブルに発行して、テーブルを再構築します。

32
locka

コンテンツを削除するつもりで、そのセルがそのまま残っている場合:

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);
    }
}
10
eee
    //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);
        }
    }

いくつかのオプションがあります:

  1. new DefaultTableModel()を作成しますが、リスナーは必ず再接続してください。
  2. model.removeRow(index)を反復処理して削除します。
  3. List/Setをラップする独自のモデルを定義し、clearメソッドを公開します。
2

JTableのすべてのセルをクリアし、新しい空のjTableのようにしたいということだと思います。たとえば、テーブルに40のrawが含まれている場合、次のことができます。

DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
model.setRowCount(0);
model.setRowCount(40);
0
Malith

簡単な方法の1つは、次のオプションを使用することです。

dataModel.setRowCount(0);

dataModelは、コンテンツをクリアするモデルです

ただし、それは最適な解決策ではありません。

0