Подтвердить что ты не робот

ActionListener в JLabel или JTable ячейке

У меня есть JTable с JLabel[][] как данные. Теперь я хочу обнаружить двойной щелчок на JLabel или на ячейке таблицы (но только в одном из столбцов). Как я могу добавить Action/MouseListener в JLabel соответственно ячейку таблицы?

4b9b3361

Ответ 1

Как насчет:

table.addMouseListener(new MouseAdapter() {
  public void mouseClicked(MouseEvent e) {
    if (e.getClickCount() == 2) {
      JTable target = (JTable)e.getSource();
      int row = target.getSelectedRow();
      int column = target.getSelectedColumn();
      // do some action if appropriate column
    }
  }
});

Ответ 2

В основном такое же предложение, как и принятое, за исключением:

a) вы должны обрабатывать mousePressed, а не mouseClicked. Событие mouseClicked запускается только тогда, когда событие mousePressed и mouseReleased генерируется в том же месте пикселя. Вы, если пользователь перемещает мышь даже 1 пиксель, а двойной щелчок, вы не получите ожидаемый двойной щелчок.

b) Также вы можете захотеть использовать методы columnAtPoint() и rowAtPoint() для получения ячейки с щелчком. Хотя это, вероятно, не имеет значения в этом случае, будет иметь значение, если вы когда-нибудь попытаетесь использовать MouseListener для правого щелчка мыши, так как выбор не изменяется. Поэтому, если вы привыкнете использовать этот метод, у вас не будет проблем в будущем.