予備質問
Google Guava イベントが発生したときに更新されるように JTable を作成するにはどうすればよいですか (そしてスレッドセーフであることを保証します)。
簡単な方法はmodel.setValueAt(aValue, row, column);
2 つの問題:
- JTableModel の標準データ構造を使用すると、自分がどの行にいるのかわかりません。
- JTableModel の標準データ構造を使用しているため、このデータを他のコンポーネントに使用することはできません
- これはスレッドセーフではありません(と思います)
JTableModel を ConcurrentHashMap を使用するように変更することを考えましたが、これはそれを拡張する意図された目的ではないようです。これは奇妙なバグへのルートだと思います。
このすべての中で私は非常に迷っています。最初に何を調べるべきかのガイドを提供していただければ、非常に役立ちます.
より詳しい質問
イベントは EVT にはありません。実行したことを確認するためSwingUtilities.isEventDispatchThread()
に、結果は false でした。
私が今すべきだと思うこと:
@Subscribe
public void handleMessage(DataStructure newInformation) {
// handle the information
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
tableModel.setValueAt(...); // update table1
tableModel2.setValueAt(...); // update table2
}
});
}
イベントでは、テーブルから完全に独立した情報を取得します。情報がどの行に関連しているかを知る方法が必要です。
モデル内のベクトル全体をいつでも循環できますが、マップまたは配列を使用できるソリューションを探しています。