私はJTable
のモデルとしてサブクラスAbstractTableModel
を使用しました。データが追加されるたびに、AWTスレッドでfireTableRowsInserted()
を呼び出します。私の基になるコンテナへのすべてのアクセスは、synchronizedメソッドを使用してスレッドセーフになります。非AWTスレッドのAbstractTableModelでデータを更新するためのベストプラクティス
このパターンはこれまでのところうまく機能しています。しかし今、リストからデータを削除したいと思っています。スレッドの問題があることに気付きました。行を削除してAWTスレッドでfireTableRowsDeleted()
を呼び出すと、行インデックスの呼び出しはまだgetValueAt()
になりましたが、もう存在しなくなりました。
AWTスレッド外のテーブルモデルで操作を実行する場合のベストプラクティスは何ですか?
これは、(上書きする)メソッドがAbstractTableModelの中にあり、かつメソッドがFireXxxXxxの場合にモデルの外から呼び出されるかどうかに依存しますが、両方のモデルでaddRowとremoveRowの間に違いは見られないので(モデルとビューも) – mKorbel