1

我有一个触发的功能:

public void tableChanged(TableModelEvent e){...}

我从 TableModelEvent 中获得了 TableModel:

TableModel model = (TableModel)e.getSource();

但我需要 JTable 才能在 TablecellBalloonTip 构造函数中使用它。如何从 TableModel 中获取 JTable?

4

2 回答 2

5

您无法直接从事件中获取它。您将侦听器安装到模型,而不是表本身。该模型没有对表的引用。实际上,同一个模型可能会被多个表重用。因此,您必须将对表的引用存储在其他地方。如果你只有一张桌子,那么这应该工作:

final JTable table = new JTable(); 
table.getModel().addTableModelListener(new TableModelListener() {
  @Override   
  public void tableChanged(TableModelEvent e) {   
    table.doSomething();
  }
 });

否则,如果您有多个表,您可以像上面一样为每个表创建一个单独的侦听器。

于 2011-07-05T09:00:14.810 回答
1

您需要将JTable实例保存在某处,以备后用。可以作为panel实例变量。

在 MVC 中,Model不绑定到特定的视图或控制器,因此您无法从中获取它Model——这是非常值得期待的。

于 2011-07-05T09:02:06.057 回答