我目前正在使用JFrame
来保存包含多个表的JTabbedPane
。在我的班级中extends JFrame
和implements TableModelListener
,我有一个onChanged()
方法,以TableModelEvent
为参数。我可以从触发事件的表上的事件中成功获取数据,但我无法确定它是哪个表。
据我所知,这不是我打算做的事情。我相信我可能需要编写自定义TableModelListener
或JTable
并在那里实施onChanged()
方法。
我需要做些什么才能确定JTable
中哪些JTabbedPane
已更改?我需要找到表和修改过的行。
答案 0 :(得分:2)
TableModelListener
和TableModelEvent
不会提供有关模型与之关联的JTable
的信息,因为理论上模型可能由多个表共享。
获取行是从事件中获取行的问题,该行来自firstRow
和lastRow
属性。一旦您可以确定模型属于您的表,您就可以使用JTable#convertRowIndexToView
要找到至少有JTable
两个基本解决方案
询问存储在每个JTabbedPane
中的每个表的模型,并将其与生成表模型事件的模型进行比较
在TableModel
和JTable
或JTabbedPane
之间保持某种形式的查找,具体取决于您最终获得的内容
这可以通过使用某种Map
来实现,与TableModel
答案 1 :(得分:1)
我相信我可能需要编写一个自定义的TableModelListener ...
它与TableModelListener非常相似,但您需要在创建TableCellListener
时指定JTable,这样您就可以在更改值时访问该表。