ActionListener su JLabel o cella JTable
-
21-09-2019 - |
Domanda
Ho un JTable con JLabel[][]
come dati. Ora voglio rilevare un doppio click su entrambi i JLabel o una cella di tabella (ma solo in una delle colonne). Come posso aggiungere un azione / MouseListener su JLabel rispettivamente cella di una tabella?
Soluzione
Come su:
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
}
}
});
Altri suggerimenti
In sostanza la stessa suggestione di quello già accettato eccezione:
a) si dovrebbe gestire mousePressed, non mouseClicked. Un evento mouseClicked viene sparato solo quando un evento mousePressed e mouseReleased viene generato nella stessa posizione di pixel. Se l'utente sposta il mouse anche 1 pixel, mentre un doppio clic non sarà possibile ottenere l'atteso doppio clic.
b) Inoltre si può prendere in considerazione utilizzando il columnAtPoint () e metodi rowAtPoint () per ottenere il cellulare cliccato. Anche se probabilmente non fa la differenza in questo caso, si importerà se mai tenta di utilizzare un MouseListener per i clic destro del mouse, dal momento che la selezione non viene modificata. Quindi, se si ottiene l'abitudine di usare questo metodo non avrete problemi in futuro.