Name einer Komponente ermitteln

Status
Nicht offen für weitere Antworten.

Hummel

Mitglied
Guten Tag,

gibt es eine Möglichkeit, den Namen einer Komponente ( getName() ) zu ermitteln, auf die ein Benutzer gerade mit der Maus zeigt?

Gruß
 
Das heißt ich füge zu der jeweiligen Komponente einen MouseMotionListener hinzu und dann ...?

Kann ich über das MouseEvent eine Aktion ausführen und dabei den Namen der Komponenten ermitteln.

Das würde aber bedeuten das ich für jede Komponente, deren Name ich ermitteln möchte einen Listener anhängen müsste. Oder bin ich auf dem Holzweg? :bahnhof:
 
Du kannst entweder für jeder Komponente einen Listener (die selbe Listener-Instanz) hinzufügen. Oder Global auf alle MouseEvents hören. Letzteres sollte man nur tun, wenn man wirklich alle Komponenten benötigt. In beiden Fällen kannst Du so einen Listener benutzen:
Java:
final MouseListener myListener = new MouseAdapter() {

  @Override
  public void mouseEntered(MouseEvent e) {
    // Die Maus ist in einer Komponente
    System.out.println("Mouse entered component: "
          + e.getComponent().getName());
  }

  @Override
  public void mouseExited(MouseEvent e) {
    // Die Maus hat eine Komponente verlassen
    System.out.println("Mouse exited component: "
          + e.getComponent().getName());
  }
};
Zu einer Komponente kann man den Listener so hinzufügen:
Java:
component.addMouseListener(myListener);
Wenn man alle Komponenten braucht, dann muss man einen AWTEventListener an das Toolkit hängen:
Java:
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

  public void eventDispatched(AWTEvent event) {
    switch (event.getID()) {
    case MouseEvent.MOUSE_ENTERED:
      myListener.mouseEntered((MouseEvent) event);
      break;
    case MouseEvent.MOUSE_EXITED:
      myListener.mouseExited((MouseEvent) event);
      break;
    case MouseEvent.MOUSE_PRESSED:
      myListener.mousePressed((MouseEvent) event);
      break;
    case MouseEvent.MOUSE_RELEASED:
      myListener.mouseReleased((MouseEvent) event);
      break;
    case MouseEvent.MOUSE_CLICKED:
      myListener.mouseClicked((MouseEvent) event);
      break;
    }
  }
}, AWTEvent.MOUSE_EVENT_MASK);
Ebenius
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben