从其 TableModel 获取 JTable

Rom*_*dgz 1 java swing jtable tooltip tablemodel

我有一个函数触发:

public void tableChanged(TableModelEvent e){...}
Run Code Online (Sandbox Code Playgroud)

我从 TableModelEvent 得到了 TableModel :

TableModel model = (TableModel)e.getSource();
Run Code Online (Sandbox Code Playgroud)

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

Ily*_*din 5

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

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

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