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

Я ответил бы на этот вопрос с другим вопросом: Вы используете , одиночные элементы / Являются одиночными элементами плохо?

, поскольку (почти все) одноэлементное использование является прославленной глобальной переменной.

21
задан Dave Clemmer 9 October 2013 в 03:18
поделиться

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
    }
  }
});
61
ответ дан 29 November 2019 в 06:12
поделиться

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

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

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

27
ответ дан 29 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: