Java JTable SelectionListener - PullRequest
       42

Java JTable SelectionListener

2 голосов
/ 27 февраля 2012

У меня есть две JTables , заполненные данными на JPanel. Пользователь пытается удалить строку из одной из таблиц, выбрав строку и нажав кнопку «Удалить». Проблема для меня заключается в том, как выяснить, какой из двух JTables был сфокусирован последним (пользователь может щелкнуть строку в таблице 1, затем строку в таблице 2, затем «удалить», и я хочу удалить строка из таблицы 2). Я бы увидел это, может быть, так:

таблицы добавили ListSelectionListener , который запускает событие valueChanged , когда строка выбрана, но теперь я должен каким-то образом уведомить компонент, содержащий эти две таблицы, одна из которых была выбрана последней

Кто-нибудь знает, как я могу решить это? И, пожалуйста, если бы вы могли предоставить пример кода, он был бы очень признателен.

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012

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

public void valueChanged(ListSelectionEvent e) {
    if (e.getSource() == jTable1.getSelectionModel()) {
      System.out.println("Event occurred in table 1");
    } else if (e.getSource() == jTable2.getSelectionModel()) {
      System.out.println("Event occurred in for table 2");
    }
}
2 голосов
/ 27 февраля 2012

Зарегистрируйте FocusListener в обеих таблицах , чтобы отследить, какая таблица была сфокусирована последней.

Более подробную информацию можно найти на http://docs.oracle.com/javase/tutorial/uiswing/events/focuslistener.html

...