Systemtray + JTree
Thedor
- java
0 Rouven0 Theodor1 Daniel Thoma0 Theodor
0 Theodor,
Hallo,
kann mir einer sagen, ob ich unter Java ein JTree + Scrollpane
in das Systemtray-Menu einbinden kann?
Konnte bisher noch keine vernuenftigen Infos diesbezueglich
in Erfahrung bringen.
Danke
Thedor
PS: Benutze Java 1.6
Hello,
kann mir einer sagen, ob ich unter Java ein JTree + Scrollpane
in das Systemtray-Menu einbinden kann?
du meinst das Systray unten rechts in der Ecke neben der Uhr? Bin mir ziemlich sicher, dass das nicht geht, da unten befinden sich Icons, keine Anwendungen. Auf Wunsch können diese Icons ihrerseits kleine Fenster öffnen, die dann aber vor/über der Taskleiste aufgehen - man verbessere mich, wenn ich falsch liege...
MfG
Rouven
Hallo Rouven,
Ich bezweifle leider auch, dass das ueberhaupt geht.
du meinst das Systray unten rechts in der Ecke neben der Uhr?
Jep.
Bin mir ziemlich sicher, dass das nicht geht, da unten befinden
sich Icons, keine Anwendungen.
Nun ja, Icons _von_ und _fuer_ Anwendungen ;)
Auf Wunsch können diese Icons ihrerseits kleine Fenster öffnen, die
dann aber vor/über der Taskleiste aufgehen
Unter http://www.jpackages.com/jtray/ sind einige Anwendungsbeispile aufgelistet.
Man kann MenuItems (Label Icons, etc..) hinzufuegen, welche mit
Eventhandlern versehen sind.
Warum ich uebrhauot darauf komme ist wie folgt:
Kennst Du zufaellig von M$-Outlook die schoene Anzeige, wenn eine
neue Mail eingetreten ist? Es erscheint so eine Art Popup direkt
ueber dem Systemtray. Ich bin mir nicht sicher, ob das noch zur
Implementierung des Systemtrays gehoert, oder ob es ein einfacher
Container ist, der "in der Naehe des Systemtrays" angezeigt wird.
Jedoch moechte ich aehnliches gerne realisieren.
Gruesse
Theodor
Hallo Theodor,
Hast Du Dir schonmal die Dokumentation zu java.awt.SystemTray und java.awt.TrayIcon angesehen?
Es ist möglich, dem TrayIcon beliebige MouseListener hinzuzufügen.
Dann kannst Du dort statt eines normalen PopupMenu ein beliebiges Fenster aufmachen. (Fenster ohne Rand etc. bekommt man mit java.awt.Window bzw. der entsprechenden Swing-Klasse JWindow. Damit kannst Du dann auch dein JTree unterbringen. Du musst Dich halt um die Platzierung des Fensters selbst kümmern, aber das sollte nicht so schwierig sein.
Kennst Du zufaellig von M$-Outlook die schoene Anzeige, wenn eine
neue Mail eingetreten ist? Es erscheint so eine Art Popup direkt
ueber dem Systemtray.
Ja, solche Infoboxen gibt es auch bei anderen Systemen. TrayIcon hat dafür eine Methode displayMessage. Dort kannst Du aber keine eigenen Komponenten verwenden sondern nur einen Titel, Text und Typ angeben. Das dürfte daran liegen, dass diese Boxen nicht von Java sondern vom jeweiligen Desktopsystem bereitgestellt werden.
Allgemein solltest Du Dir bewusst sein, dass das nicht immer funktionieren muss. Unterstützt werden wohl Windows, KDE und Gnome evtl. passiert bei Mac OSX auch irgend etwas, ich weiß gar nicht, ob es da schon Java 1.6 gibt.
Grüße
Daniel
Hallo Daniel,
Es ist möglich, dem TrayIcon beliebige MouseListener hinzuzufügen.
[..] Platzierung des Fensters selbst kümmern [..]
Ja, so habe ich das auch nun realisiert.
Schien mir auch die beste / einfachste Moelgichkeit zu sein.
[..] dass diese Boxen nicht von Java sondern vom
jeweiligen Desktopsystem bereitgestellt werden.
Richtig. Es klappt bisher unter meinem K/X/Ubuntu und unter Windows.
Allgemein solltest Du Dir bewusst sein, dass das nicht immer
funktionieren muss. Unterstützt werden wohl Windows, KDE und Gnome
evtl.
Da es sich eh um ein privates Web-Forum fuer ein paar Freunde von mir
handelt, bleibt zum einen das MacOS-Problem aussen vor, des weiteren
ist es als ein Desktop-Zusatz - quasi als ein Nice-To-Have - zu
betrachten. Ich moechte lediglich die Moelgichkeit liefern, dass auf
dem Client in regelmaessigen Intervallen ueberprueft wird, ob fuer
ihn neue Beitraege auf dem Server (im Web) existieren.
Gruesse & Danke
Theodor
Hallo Rouven,
ich habe das nun so implementiert, dass ich ein JWindow an der
Cursorposition anzeigen lasse. Klappt wunderbar ;-)
Gruss
Christopher