ActionListener на ячейке JLabel или JTable

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

2 ответов


Как насчет:

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
    }
  }
});

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

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

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