Ho una tabella J con JLabel[][]
come dati. Ora voglio rilevare un doppio clic su JLabel o su una cella di tabella (ma solo in una delle colonne). Come posso aggiungere un'azione/MouseListener su JLabel rispettivamente alla cella di tabella?ActionListener nella cella JLabel o JTable
risposta
ne dite:
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
}
}
});
se ho Jlabel all'interno della cella Tabella, come chiamerò quell'evento click al clic? – Krishna
come sotto commento @Camickr, penso che sia meglio usare il metodo MousePressed non MouseClick –
In sostanza la stessa suggestione di quello già accettato, tranne:
a) si dovrebbe gestire mousePressed, non mouseClicked. Un evento mouseClicked viene attivato solo quando viene generato un evento mousePressed e mouseReleased nella stessa posizione di pixel. Se l'utente sposta il mouse di 1 solo pixel mentre fa doppio clic non si ottiene il doppio clic previsto.
b) Inoltre, è possibile prendere in considerazione l'utilizzo dei metodi columnAtPoint() e rowAtPoint() per ottenere la cella selezionata. Anche se probabilmente non fa la differenza in questo caso, sarà importante se provi a utilizzare MouseListener per i clic con il tasto destro del mouse, poiché la selezione non viene modificata. Quindi, se abitui ad usare questo metodo, non avrai problemi in futuro.
JLabels non ha ActionListeners, ma ha MouseListener, li aggiunge e ascolta su mouseClick – Telcontar