# Menu beim TrayIcon ausblenden



## LovelySacrefice (5. Okt 2010)

Hallo,

habe folgendes Problem. Habe ein TrayIcon mit JPopup- Menü. Alles klappt soweit gut. Alle FUnktionen werden geladen etc... 
Nur ist eine Sache richtig nervig: Wenn ich nichts auswähle, bleibt das Menü bestehen. 

Weiß jemand, wie ich es einstellen kann, dass wenn ich zB auf den Desktop klicke das Menu wieder verschwindet? Btw, das Problem hab ich nur unter Win 7 und Vista. Auf XP, Linux und Mac OX.x verschwindet es automatisch bei einem Klick auf den Bildschirm. 
Das blöde ist, die meisten User werdern Win7 haben :bahnhof::noe::shock:

Danke im voraus!


----------



## André Uhres (5. Okt 2010)

Mach in dein JPopup-Menü einfach einen Eintrag "Menü schließen".


----------



## slawaweis (5. Okt 2010)

LovelySacrefice hat gesagt.:


> Weiß jemand, wie ich es einstellen kann, dass wenn ich zB auf den Desktop klicke das Menu wieder verschwindet?


dazu ist der FocusListener da. Auf dem JPopup registrieren und bei focusLost das Popup schließen.

FocusListener (Java 2 Platform SE v1.4.2)

Slawa


----------



## André Uhres (6. Okt 2010)

Das ist kein JPopupMenu!

Gruß,
André


----------



## Runtime (6. Okt 2010)

Soviel ich weiss, ist das die Sache von Windows, da kann man nichts machen ohne nativen Code, selbst dann ist es auch nicht 100%-ig möglich.


----------



## slawaweis (6. Okt 2010)

André Uhres hat gesagt.:


> Das ist kein JPopupMenu!


im ersten Beitrag steht "JPopup- Menü".

Slawa


----------



## Runtime (6. Okt 2010)

Aber TrayIcon ist eine AWT Klasse, deshalb wäre es eigentlich ein PopupMenu.


----------



## slawaweis (6. Okt 2010)

Runtime hat gesagt.:


> Aber TrayIcon ist eine AWT Klasse, deshalb wäre es eigentlich ein PopupMenu.


man kann auch ein JPopupMenu mit TrayIcon verwenden.

Slawa


----------



## shadow123 (6. Okt 2010)

Hi,

versuch mal dein unsichtbares Fenster in den Vordergrund zu setzen. Dann sollte das Menü verschwinden wenn es den Focus verliert. So z. B. funktioniert es bei native Programmiersprachen (Delphi, C/C++).

Gruß


----------



## André Uhres (7. Okt 2010)

Der Vorschlag von shadow123 wird imho eher funktionieren als der von slawaweis (mein Vorschlag funktioniert selbstverständlich).

Gruß,
André


----------



## Runtime (12. Nov 2010)

Mir ist gerade, als ich mit einem TrayIcon gearbeitet habe, eine Idee gekommen:
Dem TrayIcon kann man einen MouseListener adden, mit dessen Event man dann die Screen-Koordinaten herausliest und dort ein JPopupMenu zeigt, und dann macht mans wie oben beschrieben.
Edit:
Als Invoker kann man das Fenster benutzen, das erzeugt wird wenn man das TrayIcon zum Tray hinzufügt, damit sich die Andwendung nicht beendet wenn alle anderen Frames disposed sind. In dieses Fenster kommt man mit Window.getWindows().


----------



## André Uhres (13. Nov 2010)

Hallo Runtime,

einen JPopupMenu anzuzeigen, ist selbstverständlich kein Problem. Auch ist dein Vorschlag anscheinend identisch mit dem von slawaweis. Ich bezweifle aber, dass er das Problem von LovelySacrefice löst.

Gruß,
André


----------



## Runtime (13. Nov 2010)

Doch, wenn es den Fokus verliert, veschwindet es.


----------



## André Uhres (14. Nov 2010)

Runtime hat gesagt.:


> Doch, wenn es den Fokus verliert, verschwindet es.



Das mag ja sein, aber wenn es genügt, statt PopupMenu einfach JPopupMenu zu nehmen, dann versteh ich nicht, was du damit meinst, wenn du oben schreibst: "und dann macht man's wie oben beschrieben".

Gruß,
André


----------



## Runtime (14. Nov 2010)

Das ist ein Überlegungsfehler . Einfach nicht beachten.


----------



## LovelySacrefice (18. Feb 2011)

Das lustige ist jetzt, ich habe das Problem nur unter Win 7 ^^
Auf Win XP (da wo es überwiegend eingesetzt wird derzeit) funktioniert es wie es soll.
Hab ich vor kurzen zufällig entdeckt... ^^


----------

