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 для щелчков Правой Кнопкой Мыши, так как выбор не изменяется. Поэтому, если вы привыкнете использовать этот метод, у вас не будет проблем в будущем.