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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top