1

ボタンをクリックして JTable データを更新したい。

問題は、JTable 内の古いデータを削除できず、新しいデータがテーブルに追加されるだけであることです。以下の方法で古いデータを削除しようとしましたが、どれも機能しません。

1. table.setModel(new DefaultTableModel());
2. ((DefaultTableModel)table.getModel()).setRowCount(0);
3. ((DefaultTableModel)table.getModel()).fireTableDataChanged();
4. ((DefaultTableModel)table.getModel()).getDataVector().removeAllElements();
5. table.repaint();
6. model = (DefaultTableModel)table.getModel();
   while(model.getRowCount() > 0) {
       model.removeRow(0);
   }
4

3 に答える 3

4

JTable の更新ボタンがあることは非常に疑わしいです。データが追加または削除されるたびにJTablesが更新されるため、データを正しく追加していないと思います。

DefaultTableModel を使用する場合、いくつかのことを確認します。

  1. addRowを使用してデータのみを追加するようにしてください
  2. データは、insertRowを使用してのみ挿入する必要があります
  3. removeRowを使用してデータを削除する

内部ベクトルを直接変更しないでください。イベントが発生することはなく、更新ボタンが表示されたままになります。なぜ彼らがそれを公開するのかさえわかりません。JavaDocs は、少なくともこれに対して明確に警告する必要があります。

他のすべてが失敗した場合は、デバッガーを起動して何が起こるかを確認してください。

于 2013-03-28T13:07:09.053 に答える
0

ここでは、より多くのコードが適切な場合があります。これらのメソッドとその順序をどこで呼び出しているかを正確に伝えるのは困難です。モデルを変更してから fireTableDataChanged() を呼び出すと、うまくいくはずです....正しいTableModelを更新したと仮定します。テーブルを使用するための優れた Java チュートリアルがあります: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

于 2013-03-28T12:52:19.573 に答える