JTableのすべての行を削除する

java jtable swing
JTableのすべての行を削除する

JTableのすべての行を削除する必要があります。

私は次の両方を試しました:

/**
 * Removes all the rows in the table
 */
public void clearTable()
{
    DefaultTableModel dm = (DefaultTableModel) getModel();
    dm.getDataVector().removeAllElements();
    revalidate();
}

and

((DefaultTableModel)table.getModel()).setNumRows(0);

どちらもすべての行を削除しません。 何か案は?

  25  6


ベストアンサー

Javaのドキュメントを参照して、この目的でDefaultTableModel.setRowCount(int)を使用できます。

モデルの行数を設定します。 新しいサイズが現在のサイズよりも大きい場合、モデルの最後に新しい行が追加されます。新しいサイズが現在のサイズよりも小さい場合、インデックスrowCount以上のすべての行は破棄されます
__

つまり、次のようなテーブルをクリアできます。

DefaultTableModel dtm = (DefaultTableModel) jtMyTable.getModel();
dtm.setRowCount(0);

さて、「javaはどのようにそれらの行を破棄しますか?」では、最終的にいつかCのようなfree(void *)を呼び出すか、またはそのメモリゾーンへのすべての参照を削除してGCに任せると信じていますドキュメントは、この関数が内部でどのように機能するかに関して明確ではありません。

55


次のコードは私のために働きました:

DefaultTableModel dm = (DefaultTableModel) getModel();
int rowCount = dm.getRowCount();
//Remove rows one by one from the end of the table
for (int i = rowCount - 1; i >= 0; i--) {
    dm.removeRow(i);
}

35


このようなものはうまくいくはずです

DefaultTableModel model = (DefaultTableModel)this.getModel();
int rows = model.getRowCount();
for(int i = rows - 1; i >=0; i--)
{
   model.removeRow(i);
}

20


DefaultTableModelのAPIを読む-setRowCountメソッドは、すべての行を一度に削除/破棄することをサポートしています…​

((DefaultTableModel)myTable.getModel())。setRowCount(0);

10


まあ、setNumRows(0)は動作するはずですが、実際にAPIを読んだ場合、このメソッドは廃止され、代わりにどのメソッドを使用するかがわかります。

コードが機能しない場合、あなたは何か他の間違ったことをしているので、投稿されたコードからそれが何であるかを知ることはできません。

問題を示すhttp://sscce.org [SSCCE]を投稿してください。

8


JTableからすべての行を削除する最も簡単な方法は、代わりにこのメソッドを使用するだけです…​

tablemodel.getDataVector().removeAllElements();
tablemodel.fireTableDataChanged();

「tablemodel」は、新しい行を追加するためにテーブル用に作成したモデルです。 これは、すべての行を削除する最短かつ最速の方法です。何千もの行がある場合はどうでしょうか。 ループ?

6


try{

    DefaultTableModel dtm = (DefaultTableModel) jTable2.getModel();

    dtm.setNumRows(0);

}catch(Exception e){
}

5


または、行数は多いが列数が非常に少ない場合…​

DefaultTableModel dtm = new DefaultTableModel();
for(int i=0;i

…​replaces the old DTM with a fresh one.

1


DefaultTableModel tm = (DefaultTableModel) tbl.getModel();
while(tbl.getRowCount() > 0)
{
    ((DefaultTableModel) tbl.getModel()).removeRow(0);
}

1


    DefaultTableModel model = (DefaultTableModel)this.NAMETABLE.getModel();
    int rows = model.getRowCount();
    for(int i = rows - 1; i >=0; i--)
    {
       model.removeRow(i);
    }

1


タイトルとURLをコピーしました