我当前正在使用 JFrame
来保存包含多个表的 JTabbedPane
。在我的扩展 JFrame
和实现 TableModelListener
的类中,我有一个 onChanged()
方法,该方法采用 TableModelEvent
作为一个论点。我可以成功从触发事件的表上的事件中获取数据,但无法确定它是哪个表。
据我了解,这不是我想做的事情的方式。我相信我可能需要编写一个自定义 TableModelListener
或 JTable
并在那里实现 onChanged()
方法。
我需要做什么才能确定 JTabbedPane
中的哪个 JTable
已更改?我需要找到已修改的表和行。
最佳答案
TableModelListener
和 TableModelEvent
不会提供有关与模型关联的 JTable
的信息,因为模型可能由多个共享理论上来说是表格。
获取行就是从事件中获取行,该事件来自 firstRow
和 lastRow
属性。一旦确定模型属于您的哪个表,您就可以使用 JTable#convertRowIndexToView
确定 View 行。
要找到JTable
,您至少有两个基本解决方案
你可以...
询问存储在每个 JTabbedPane
中的每个表的模型,并将其与生成表模型事件的模型进行比较
你可以...
在 TableModel
和 JTable
或 JTabbedPane
之间维护某种查找,具体取决于您最终想要的内容
这可以通过使用某种类型的Map
来实现,并以TableModel
为键控
关于java - 检测 JTabbedPane 中具有多个 JTable 的 onChanged() 事件的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23463097/