Вопрос

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

Это было полезно?

Решение

Как насчет:

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top