2009-09-04 4 views
19

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

+0

JLabels не имеет ограничений по ActionListener, но имеет MouseListener, добавляет их и слушает на mouseClick – Telcontar

ответ

56

Как насчет:

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

, если у меня есть Jlabel внутри ячейки таблицы, то как я могу назвать это событие щелчка на клике? – Krishna

+1

как ниже комментарий @Camickr, я думаю, что лучше использовать метод MousePressed, а не MouseClick –

26

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

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

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