У меня есть JTable с JLabel[][]
в качестве данных. Теперь я хочу обнаружить двойной щелчок на JLabel или на ячейке таблицы (но только в одном из столбцов). Как я могу добавить Action/MouseListener в JLabel соответственно ячейку таблицы?ActionListener на JLabel или JTable cell
ответ
Как насчет:
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
}
}
});
, если у меня есть Jlabel внутри ячейки таблицы, то как я могу назвать это событие щелчка на клике? – Krishna
как ниже комментарий @Camickr, я думаю, что лучше использовать метод MousePressed, а не MouseClick –
В принципе то же самое предложение, как тот уже принято, за исключением:
а) вы должны обращаться с mousePressed, не mouseClicked. Событие mouseClicked запускается только тогда, когда событие mousePressed и mouseReleased генерируется в том же месте пикселя. Вы, если пользователь перемещает мышь, даже 1 пиксель, при двойном нажатии вы не получите ожидаемый двойной щелчок.
b) Также вы можете захотеть использовать методы columnAtPoint() и rowAtPoint() для получения ячейки с щелчком. Хотя это, вероятно, не имеет значения в этом случае, будет иметь значение, если вы когда-нибудь попытаетесь использовать MouseListener для правого щелчка мыши, так как выбор не изменяется. Поэтому, если вы привыкнете использовать этот метод, у вас не будет проблем в будущем.
JLabels не имеет ограничений по ActionListener, но имеет MouseListener, добавляет их и слушает на mouseClick – Telcontar