java - 检测 JTabbedPane 中具有多个 JTable 的 onChanged() 事件的表

标签 java swing jtable jtabbedpane

我当前正在使用 JFrame 来保存包含多个表的 JTabbedPane。在我的扩展 JFrame实现 TableModelListener 的类中,我有一个 onChanged() 方法,该方法采用 TableModelEvent 作为一个论点。我可以成功从触发事件的表上的事件中获取数据,但无法确定它是哪个表。

据我了解,这不是我想做的事情的方式。我相信我可能需要编写一个自定义 TableModelListenerJTable 并在那里实现 onChanged() 方法。

我需要做什么才能确定 JTabbedPane 中的哪个 JTable 已更改?我需要找到已修改的表和行。

最佳答案

TableModelListenerTableModelEvent 不会提供有关与模型关联的 JTable 的信息,因为模型可能由多个共享理论上来说是表格。

获取行就是从事件中获取行,该事件来自 firstRowlastRow 属性。一旦确定模型属于您的哪个表,您就可以使用 JTable#convertRowIndexToView 确定 View 行。

要找到JTable,您至少有两个基本解决方案

你可以...

询问存储在每个 JTabbedPane 中的每个表的模型,并将其与生成表模型事件的模型进行比较

你可以...

TableModelJTableJTabbedPane 之间维护某种查找,具体取决于您最终想要的内容

这可以通过使用某种类型的Map来实现,并以TableModel为键控

关于java - 检测 JTabbedPane 中具有多个 JTable 的 onChanged() 事件的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463097/

相关文章:

java - 撒克逊人解析缓慢

java - printDebugData(JTabble table) 的作用是什么?

java - Jtable ListSelectionListener 不响应 jtable 操作,而是响应同一个类中的另一个 jtable 操作

java - java中如何获取ArrayList中的元素

java - JAXB - 从 XSD 生成类 - 将枚举转换为自定义 toString() 而不是枚举名称

java - 尝试渲染 pdf 时获取此 "org.xhtmlrenderer.render.BlockBox cannot be cast to org.xhtmlrenderer.newtable.TableBox"

java - 如何在 JPanel 中绘制矩形

java - 如何向 jpanel 添加视觉效果?

Java 在按回车键时将焦点设置在 JButton 上

JFrame 不同类中的 Java JTable