Frage

Ich habe eine JTable mit JLabel[][] als Daten. Jetzt möchte ich entweder auf der JLabel oder einer Tabellenzelle einen Doppelklick erkennen (aber nur in einer der Spalten). Wie kann ich eine Aktion / Mouselistener auf JLabel bzw. Tabellenzelle hinzufügen?

War es hilfreich?

Lösung

Wie wäre:

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

Andere Tipps

Im Grunde genommen der gleiche Vorschlag wie die bereits akzeptiert, außer:

a) Sie sollten mouse behandeln, mouseClicked nicht. Ein mouseClicked Ereignis wird nur ausgelöst, wenn ein mouse und mouse Ereignis an der gleichen Pixelposition erzeugt wird. Sie, wenn der Benutzer die Maus auch 1 Pixel während Doppelklick werden Sie nicht die erwartete Doppelklick erhalten.

b) Auch können Sie Methoden mit dem columnAtPoint () und rowAtPoint () zu prüfen, die klickten Zelle zu erhalten. Obwohl es wahrscheinlich einen Mouselistener für die rechte Maustaste zu verwenden, macht keinen Unterschied in diesem Fall zu machen, wird es eine Rolle, ob Sie überhaupt versuchen, da die Auswahl nicht geändert wird. Also, wenn Sie in der Gewohnheit der Verwendung dieser Methode werden Sie keine Probleme in der Zukunft haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top