1

私は次のようにトリガーする関数を持っています:

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

私は TableModelEvent から TableModel を取得しました:

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

しかし、TablecellBalloonTip コンストラクターで使用するには JTable が必要です。TableModel から JTable を取得するにはどうすればよいですか?

4

2 に答える 2

5

イベントから直接入手することはできません。テーブル自体ではなく、モデルにリスナーをインストールしました。モデルにはテーブルへの参照がありません。実際には、同じモデルが複数のテーブルで再利用される可能性があります。したがって、テーブルへの参照を別の場所に保存する必要があります。テーブルが1つしかない場合、これは機能するはずです。

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 に答える