Mauszeiger über Button

Status
Nicht offen für weitere Antworten.
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:

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?
 

The_S

Top Contributor
Ich halte es für ziemlich sinnfrei dass Fenster wieder zu schließen sobald du den Button verlässt, da dann ja immer beim aufrufen des Fensters selbiges wieder geschlossen wird, sobald es geschlossen ist befindet sich der MouseListener ja wieder im Fenster, also wird es wieder aufgerufen ...

Warum willst du es wieder schließen sobald man vom Button runter ist?
 

Mag1c

Top Contributor
Und

warum muß es überhaupt ein JWindow sein ? Wäre da ein Popup nicht besser geeignet ?

Gruß
Mag1c
 
G

Guest

Gast
Hobbit_Im_Blutrausch hat gesagt.:
Warum willst du es wieder schließen sobald man vom Button runter ist?


Ich möchte so eine Art Tooltip für den Button machen. Allerdings sollte die nicht jedesmal erscheinen, sondern nur unter bestimmten Voraussetzungen.

Mag1c hat gesagt.:
warum muß es überhaupt ein JWindow sein ? Wäre da ein Popup nicht besser geeignet ?

Danke für den Tip!
Popup kannte ich bis jetzt noch nicht. Hab es mal ausprobiert (in Verbindung mit dem MouseListener) und das Flackern ist weg.

Das Problem, das ich jetzt noch habe ist die Position des Popups. Der Button befindet sich in einem Panel, das sich wiederum im Haupfenster (BorderLayout.SOUTH) befindet. Ich möchte nun, dass das Popup ähnlich wie bei einem Tooltip in der Nähe des Buttons erscheint.

Die Koordinaten des MouseEvents kann ich da nicht nehmen, weil die relativ zur Position des Buttons sind,
button.getLocation() funktioniert auch nicht, da das die Koordaten relativ zum Panel liefert und nicht relativ zum gesamten Fenster.

Wie kann man die Position des Buttons und/oder die Position des Mauszeigers relativ zum gesamten Fenster bestimmen?
 

Mag1c

Top Contributor
Hi,

ich glaube, du brauchst Screen-Koordinaten und die bekommst du mit Component#getLocationOnScreen.

Gruß
Mag1c
 
G

Guest

Gast
Hallo Mag1c!

Besten Dank für Deine Hilfe. Damit ist mein Problem gelöst.
 

Illuvatar

Top Contributor
Also ich denke da wäre ein Tooltip am besten geeignet ???:L
JComponent#setToolTipText
oder bei ToolTipManager schauen für kompliziertere mit nicht nur Text.
 
G

Guest

Gast
Hallo Illuvatar!

Das Problem mit Tooltips ist, dass die ja immer angezeigt werden, wenn man sich mit dem Mauszeiger über dem Button befindet, oder gibt es da eine Möglichkeit dies zu beeinflussen. Ich möchte nämlich den "Tooltip" nur unter bestimmten Voraussetzungen anzeigen.
 
G

Guest

Gast
Ok, ihr habt mich überzeugt! Ein Tooltip ist hier offensichtlich doch die bessere Lösung.

Nochmal vielen Dank an alle, die mir hier geholfen haben! :toll:
 
G

Guest

Gast
Hab jetzt doch noch eine Frage.

Wenn ich eine eigene Tooltipklasse schreiben will. Wie kann man die dann für den Button setzen. Ich hab da nur die Methode setTooltipText gefunden, aber kein setTooltip oder sowas ähnliches.
 
G

Guest

Gast
Hallo!

Hab es gerade herausgefunden. So, wie es aussieht, muß man die createToolTip() - Methode aus JComponent überschreiben. Z.B.:

Code:
public class MyToolTip extends JToolTip
{
   ...
}

public class MyButton extends JButton
{
    public JToolTip createToolTip()
    {
        JToolTip toolTip = super.createToolTip();
        tooltip = new MyToolTip();
        return toolTip;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bild in Richtung Mauszeiger drehen AWT, Swing, JavaFX & SWT 2
frankred Swing Eigener ListCellRenderer D'n'D "MOVE" - Mauszeiger flackert AWT, Swing, JavaFX & SWT 14
E Spinne die aufm desktop dem mauszeiger folgt! AWT, Swing, JavaFX & SWT 11
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
K JSplittPane mauszeiger ändern AWT, Swing, JavaFX & SWT 6
C Mauszeiger ändern AWT, Swing, JavaFX & SWT 1
K Wenn Mauszeiger in der Nähe vom Kreis, soll Kreis an eine andere Stelle springen AWT, Swing, JavaFX & SWT 8
G Mauszeiger verändern AWT, Swing, JavaFX & SWT 10
I Mauszeiger "verwandeln" AWT, Swing, JavaFX & SWT 5
G Drag and drop - Bild ohne ziehen am Mauszeiger anhängen? AWT, Swing, JavaFX & SWT 8
H Bild mit Mauszeiger bewegen AWT, Swing, JavaFX & SWT 2
A Komponente überdecken Mauszeiger AWT, Swing, JavaFX & SWT 8
J Mauszeiger ändern AWT, Swing, JavaFX & SWT 3
I JTextfield senden über Enter AWT, Swing, JavaFX & SWT 1
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
A Layoutwechsel über RadioButtons AWT, Swing, JavaFX & SWT 3
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
J Spielfelder auch über die Tastatureingabe (1…9) ansteuern (Tic Tac Toe) AWT, Swing, JavaFX & SWT 2
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
C Swing Aufruf der Funktion (die ein Dialog anzeigt) über Symbol anzeigen lassen AWT, Swing, JavaFX & SWT 4
G LayoutManager Panels anordnen über Schleifenvariablen AWT, Swing, JavaFX & SWT 7
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
L JavaFX TreeView Edit Mode über F2 AWT, Swing, JavaFX & SWT 13
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
C JavaFX ScrollPane schießt über das Ziel hinaus... AWT, Swing, JavaFX & SWT 1
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
C Applet Zeichnen über Button-Click AWT, Swing, JavaFX & SWT 13
L JavaFX Hover Effekt über das Parent Element AWT, Swing, JavaFX & SWT 4
C JavaFX GUI - Entscheidung über Framework AWT, Swing, JavaFX & SWT 4
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
Augenblau JavaFX Externe Schriftart über CSS ansprechen und zuweisen AWT, Swing, JavaFX & SWT 5
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
O JTextfield wird über'drawed'.. AWT, Swing, JavaFX & SWT 6
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
P Vorteile von Tooltip nutzen (wird über allen anderen Objekten angezeigt) AWT, Swing, JavaFX & SWT 3
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
D Swing Letzte Zeile einer JTable nicht über RowSorter sotieren AWT, Swing, JavaFX & SWT 2
C Methode über Buttonklick starten AWT, Swing, JavaFX & SWT 8
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
3 JDialog über einem Vollbildfenster anzeigen AWT, Swing, JavaFX & SWT 5
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
A Bild über Imageviewer auf GUI anzeigen AWT, Swing, JavaFX & SWT 3
K 2D-Grafik Kontrastanpassung über einen JSlider AWT, Swing, JavaFX & SWT 2
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
L Button über/auf JTextField AWT, Swing, JavaFX & SWT 5
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
D JTextField über ein Game AWT, Swing, JavaFX & SWT 11
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
bluerob Fehler bei Wertübermittlung über KeyListener AWT, Swing, JavaFX & SWT 3
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
S JDialog direkt über dem MainFrame aufpoppen lassen AWT, Swing, JavaFX & SWT 2
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
R Bewglichen Rahmen über einem Bild AWT, Swing, JavaFX & SWT 3
P Listenelemente über Checkbox löschen AWT, Swing, JavaFX & SWT 6
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
K Swing JButton über JLabel AWT, Swing, JavaFX & SWT 6
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
C Java-applikation über Fullscreen AWT, Swing, JavaFX & SWT 4
F Panels über buttons zu anderen Panels hinzufügen AWT, Swing, JavaFX & SWT 2
S JTable Filter nach Wort oder Wortteil über ganze Tabelle AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben