我有一个触发的功能:
public void tableChanged(TableModelEvent e){...}
我从 TableModelEvent 中获得了 TableModel:
TableModel model = (TableModel)e.getSource();
但我需要 JTable 才能在 TablecellBalloonTip 构造函数中使用它。如何从 TableModel 中获取 JTable?
我有一个触发的功能:
public void tableChanged(TableModelEvent e){...}
我从 TableModelEvent 中获得了 TableModel:
TableModel model = (TableModel)e.getSource();
但我需要 JTable 才能在 TablecellBalloonTip 构造函数中使用它。如何从 TableModel 中获取 JTable?
您无法直接从事件中获取它。您将侦听器安装到模型,而不是表本身。该模型没有对表的引用。实际上,同一个模型可能会被多个表重用。因此,您必须将对表的引用存储在其他地方。如果你只有一张桌子,那么这应该工作:
final JTable table = new JTable();
table.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
table.doSomething();
}
});
否则,如果您有多个表,您可以像上面一样为每个表创建一个单独的侦听器。
您需要将JTable
实例保存在某处,以备后用。可以作为panel
实例变量。
在 MVC 中,Model
不绑定到特定的视图或控制器,因此您无法从中获取它Model
——这是非常值得期待的。