初步问题
如何构建 JTable 以便在触发 Google Guava 事件时更新它(并保证它是线程安全的)?
简单的方法是做model.setValueAt(aValue, row, column);
两个问题:
- 使用JTableModel的标准数据结构,不知道自己在哪一行。
- 使用 JTableModel 的标准数据结构,我不能将此数据用于其他组件
- 这不是线程安全的(我认为)
我曾想过将 JTableModel 更改为使用 ConcurrentHashMap ,但似乎这不是扩展它的预期目的。我觉得这是一条通往奇怪错误的途径。
我在这一切中感到非常迷茫,如果你能提供一个我应该首先探索的指南,那将有很大帮助。
一个更明智的问题
事件不在 EVT 中。为了确保我跑了SwingUtilities.isEventDispatchThread()
,结果是假的。
我现在认为我应该做的:
@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
}
});
}
如果我得到完全独立于表格的信息。我需要一种方法来了解信息与哪一行相关。
我总是可以循环浏览模型中的整个向量,但我正在寻找一个可以使用地图或数组的解决方案。