Swing Symbol in Taskleiste dynamisch aus- bzw. einblenden

haimat

Mitglied
Hallo zusammen!

Ich schreibe gerade an einem Java Programm, welches auch ein Icon im System Tray Bereich in der Task Leiste anzeigt (rechts bei der Uhrzeit). Ich möchte nun dem Benutzer erlauben, optional das eigentliche Programmsymbol in der Taskleiste auszublenden (wie bei typischen Windows-Hintergrundprogrammen, Downloader etc., wenn ein Symbol im System Tray Bereich angezeigt wird).

Eine Suche in Google hat mir gezeigt, dass ich statt eines JFrame einen JDialog benutzen kann, dann wird kein Programmsymbol in der Taskleiste angezeigt. Allerdings muss ich die Elternklasse (JFrame bzw. JDialog) ja fest in meinem Programm "verdrahten", daher scheint mir dieser Ansatz (JDialog statt JFrame zu verwenden) keine Lösung für mein Problem zu sein, da ich dies ja wie gesagt dynamisch durch das (De-)Aktivieren der entsprechenden Option aus- bzw einblenden möchte.

Kennt jemand von euch noch eine andere Option, um kein Programmsymbol in der Taskleiste anzuzeigen?

Danke im Voraus für eure Hilfe und Anregungen!

Viele Grüße, Matthias
 
setVisibile() löst mein Problem leider nicht, denn das zeigt bzw. versteckt nur das Hauptfenster.
Mir gehts aber um das Symbol (den Eintrag) des Programms in der Taskleiste...

lg, Matthias
 
Also wenn das Fenster trotzdem angezeigt werden soll, dann kann man mit Java nicht viel machen ausser du nimmst den Content von Frame und tust ihn in den Dialog.
 
Genau, das war auch meine Befürchtung --
ich bin aber immer noch der Hoffnung, dass es vielleicht doch eine dynamische Alternative gibt 🙂
 
@mjdv

Ganz einfach erklärt: wie aus anderen Programmen bekannt möchte ich eine "Minimize to system tray" Möglichkeit in mein Programm einbauen. Das Programm zeigt sein Icon im System Tray Bereich an. Wenn das Programmfenster minimiert wird, während das Icon im System Tray Bereich angezeigt wird, dann brauche ich kein Icon mehr in der "normalen" Taskleiste, denn ich habe ja schon das Symbol im System Tray Bereich.

Kurz gesagt: ich will verhindern, dass ich das Programm zwei mal in der Taskleiste habe -- einmal als normalen Eintrag wie jedes andere Programm, und ein zweites Mal als Icon im System Tray Bereich. Mir reicht also nur dieses Icon im System Tray Bereich.

Dieses Feature ist an sich ja nicht so unbekannt, siehe zB. Winamp oder den VLC Media Player, oder Skype ...
 
erst mal muss man wissen, dass das Verhalten von Fenstern auf jeder Plattform anders ist. Auf Windows wird der Dialog nicht in der Taskleiste angezeigt, anderswo kann er angezeigt werden. Bei Windows 7 werden die Fenster in Unterleisten gruppiert. So sollte man das im Hinterkopf behalten.

Eine Möglichkeit so was zu realisieren wären zwei Fenster. Ein JFrame, was nichts enthält, bis auf den Titel, und in der Taskleiste erscheint. Dazu ein JDialog(null), welches das eigentliche Programm enthält und über ein PLAF alle Funktionen eines JFrames bekommt. Jetzt muss man das JFrame nur auf die kleinste mögliche Größe setzen und immer hinter dem Dialog verstecken oder mit negativen Koordinaten außerhalb des Monitors, falls das Betriebssystem so was erlaubt. Dann könnte man tatsächlich den Taskleisteneintrag einfach ein- und ausschalten. Wäre aber eine sehr unsaubere Lösung.

Die sauberste Lösung wäre, die GUI wirklich von einem JFrame in ein JDialog umzupacken und umgekehrt. Der Anwender macht es ja nicht jede Stunde, deshalb kann man es sich leisten, die Anwendung kurz verschwinden zu lassen.

Slawa
 

Zurück
Oben