2011-01-02 98 views
45

Javaを使用してJTableの内容をクリアするにはどうすればいいですか?JTableをクリアする方法

+0

チェックこの質問:http://stackoverflow.com/questions/4439210/deleting-datas-in-the-table-in-gui/4439297#4439297 –

+0

Dupe:http://stackoverflow.com/questions/3879610/clear-contents-of-a-jtable –

答えて

12

基本的には、JTableで使用しているTableModelによって異なります。あなたがDefaultTableModelを使用している場合は、次の2つの方法でそれを行うことができます。

DefaultTableModel dm = (DefaultTableModel)table.getModel(); 
dm.getDataVector().removeAllElements(); 
dm.fireTableDataChanged(); // notifies the JTable that the model has changed 

または

DefaultTableModel dm = (DefaultTableModel)table.getModel(); 
while(dm.getRowCount() > 0) 
{ 
    dm.removeRow(0); 
} 

それはあなたが使用している機種に依存詳細

+3

基礎となるデータベクトルを変更する場合は、テーブルイベントを発生させることを忘れないでください。そうしないと、JTableは変更されたという手がかりを持ちません... – dacwe

+1

-1、両方の提案が間違っています。最初に、上記の理由でコメントしました。 2行目は行をスキップします。これは、変数iが各行を削除するにつれてインクリメントし続けるためです。ループを作成する場合は、行がなくなるまで行0を削除したままにしておきます。しかし、カルロスは最も簡単な解決法を掲示しました。 – camickr

+0

Camickr、あなたは正しいです。私はこれらの問題を解決するために私の答えを変更しました。それでもCarlosのソリューションは実装が簡単です。 –

1

ためDefaultTableModelのJavadocを参照してください。あなたのJTableのために。

54

テーブルに使用されているTableModelからデータを削除する必要があります。

DefaultTableModelを使用する場合は、行数をゼロに設定するだけです。これにより、行が削除され、TableModelEventが起動し、GUIが更新されます。

JTable table; 
… 
DefaultTableModel model = (DefaultTableModel) table.getModel(); 
model.setRowCount(0);

TableModelを使用している場合は、ドキュメントを確認してください。

+0

これをここに追加するだけです...変更をすぐに見るために行数を0に設定した後に 'table.revalidate();'を呼び出さなければなりませんでした。そうしないと、 'JTable '。 – Sakiboy

+0

@dimoは私のために 'revalidate()'がなくてもうまくいきます:[単純な例](http://pastebin.com/iDgLeKPk) 'DefaultTableModel'は、データが変更された時にビューに通知します。' setNumRows int) 'であれば、行数が減少すると' fireTableRowsDeleted'を呼び出します。 –

5

私は列なしできれいなテーブルを取得する必要がありました。私はfolowingを行った:

jMyTable.setModel(new DefaultTableModel()); 
+0

迅速かつ効果的なソリューションですが、ヘッダーも削除されます。ヘッダーを削除しないようにするオプションがあれば、より良いはずです。別の投稿の誰かが、すべての行を1つずつ削除するよう提案しました。それはヘッダーを維持するだろう –

1

これは私が見つけた最も速く、最も簡単な方法である;

while (tableModel.getRowCount()>0) 
      { 
      tableModel.removeRow(0); 
      } 

これは、テーブルlickety分割をクリアし、新しいデータの準備を整えます。

1

あなたは、あなたがjTableのすべてのセルをクリアして、新しい空のjTableのようにしたいと思っていたと思います。 たとえば、テーブルがMyTableの場合は、次の操作を実行できます。

DefaultTableModel model = new DefaultTableModel(); 
myTable.setModel(model); 
1

tMOdel.setRowCount(0);を使用すると、空のテーブルを取得できます。

DefaultTableModel tMOdel = (DefaultTableModel) jtableName.getModel(); 
tMOdel.setRowCount(0); 
+0

詳細を編集してください。コード専用と「試してください」の回答は、検索可能なコンテンツが含まれていないため、推奨されません。なぜ誰かが「これを試してみる」べき理由を説明しません。私たちはここで知識のためのリソースとなるよう努力しています。 – abarisone

0
((DefaultTableModel)jTable3.getModel()).setNumRows(0); // delet all table row 

これを試してみてください。

関連する問題