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

时间:2014-05-05 00:15:16

标签: java swing jtable jtabbedpane

我目前正在使用JFrame来保存包含多个表的JTabbedPane。在我的班级中extends JFrameimplements TableModelListener,我有一个onChanged()方法,以TableModelEvent为参数。我可以从触发事件的表上的事件中成功获取数据,但我无法确定它是哪个表。

据我所知,这不是我打算做的事情。我相信我可能需要编写自定义TableModelListenerJTable并在那里实施onChanged()方法。

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

2 个答案:

答案 0 :(得分:2)

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

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

确定视图行

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

你可以......

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

你可以......

TableModelJTableJTabbedPane之间保持某种形式的查找,具体取决于您最终获得的内容

这可以通过使用某种Map来实现,与TableModel

相关联

答案 1 :(得分:1)

  

我相信我可能需要编写一个自定义的TableModelListener ...

查看Table Cell Listener

它与TableModelListener非常相似,但您需要在创建TableCellListener时指定JTable,这样您就可以在更改值时访问该表。