Получение JTable из его TableModel - PullRequest
0 голосов
/ 05 июля 2011

У меня есть функция, которая срабатывает с:

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

Я получил TableModel из TableModelEvent с:

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

Но мне нужен JTable, чтобы использовать его в cosntructor TablecellBalloonTip,Как я могу получить JTable из TableModel?

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Вы не можете получить его напрямую с мероприятия. Вы установили слушатель модели, а не сам стол. Модель не имеет ссылки на таблицу. На самом деле, одну и ту же модель можно использовать в нескольких таблицах. Таким образом, вы должны хранить ссылку на таблицу в другом месте. Если у вас есть только одна таблица, то это должно работать:

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

В противном случае, если у вас более одной таблицы, вы можете просто создать отдельный слушатель для каждой из них, как указано выше.

1 голос
/ 05 июля 2011

Вам нужно где-то хранить экземпляр JTable для дальнейшего использования.Может быть panel переменной экземпляра.

В MVC Model не привязан к конкретному представлению или контроллеру, поэтому вы не можете получить его из Model - это что-то оченьочень ожидаемый.

...