G
Gast
Gast
Hallo!
Ich möchte gerne ein JWindow einblenden, sobald man sich mit dem Mauszeiger über einem JButton befindet.
Mein erster Versuch war einen MouseListener an den Button zu hängen und in der Methode mouseEntered das Fenster einzublenden und in mouseExited das Fenster wieder auszublenden. Leider funktioniert das nicht, weil das eingeblendete Fenster fürchterlich flackert. Das dürfte irgendetwas mit dem Focus zu tun haben: Ich denke, dass sobald das JWindow eingeblendet wird, der Button bzw. das Applikationsfenster den Focus verliert und dann irgendwie die "mouseExited" - Methode aufgerufen wird und das JWindow wieder geschlossen wird, dann der Button/Applikationsfenster wieder den Fokus erhält und die "mouseEntered" - Methode aufgrufen wird usw. Deshalb hab ich #JWindow.setFocusable(false) aufgerufen, was aber auch nichts geändert hat.
Dann hab ich es mit einem MouseMotionListener versucht:
Leider funktioniert das auch nicht. Irgendwie scheint die contains-Methode ein anderes Koordinatensystem zu verwenden, als die Koordinaten, die im MouseEvent zurückgegeben werden.
Wie kann ich feststellen, ob sich der Mauszeiger über dem Button befindet?
Ich möchte gerne ein JWindow einblenden, sobald man sich mit dem Mauszeiger über einem JButton befindet.
Mein erster Versuch war einen MouseListener an den Button zu hängen und in der Methode mouseEntered das Fenster einzublenden und in mouseExited das Fenster wieder auszublenden. Leider funktioniert das nicht, weil das eingeblendete Fenster fürchterlich flackert. Das dürfte irgendetwas mit dem Focus zu tun haben: Ich denke, dass sobald das JWindow eingeblendet wird, der Button bzw. das Applikationsfenster den Focus verliert und dann irgendwie die "mouseExited" - Methode aufgerufen wird und das JWindow wieder geschlossen wird, dann der Button/Applikationsfenster wieder den Fokus erhält und die "mouseEntered" - Methode aufgrufen wird usw. Deshalb hab ich #JWindow.setFocusable(false) aufgerufen, was aber auch nichts geändert hat.
Dann hab ich es mit einem MouseMotionListener versucht:
Code:
public void mouseMoved(MouseEvent e)
{
if (btn.contains(e.getX(), e.getY()))
{
wnd.setLocationRelativeTo(btn);
wnd.setVisible(true);
}
else
wnd.setVisible(false);
}
Leider funktioniert das auch nicht. Irgendwie scheint die contains-Methode ein anderes Koordinatensystem zu verwenden, als die Koordinaten, die im MouseEvent zurückgegeben werden.
Wie kann ich feststellen, ob sich der Mauszeiger über dem Button befindet?