Pregunta

Tengo un JTable con JLabel[][] como datos. Ahora quiero detectar un doble clic sobre cualquiera de JLabel o una celda de la tabla (pero sólo en una de las columnas). ¿Cómo puedo añadir una acción / MouseListener en JLabel respectivamente celda de la tabla?

¿Fue útil?

Solución

¿Qué hay de:

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

Otros consejos

Básicamente la misma sugerencia como el que ya aceptada, excepto:

a) que debe manejar mousePressed, no mouseClicked. Un evento mouseClicked solamente se activa cuando se genera un evento de mousePressed y mouseReleased en el mismo lugar de píxeles. Si el usuario mueve el ratón, incluso 1 píxel mientras que el doble clic no obtendrá el doble click esperado.

b) También es posible que desee considerar el uso de la columnAtPoint () y métodos rowAtPoint () para obtener la célula se hace clic. Aunque probablemente no hace una diferencia en este caso, se va a importar si alguna vez intenta utilizar un MouseListener por los clics derecho del ratón, ya que la selección no se cambia. Así que si usted consigue en el hábito de usar este método no tendrá problemas en el futuro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top