Thedor: Systemtray + JTree

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

  1. 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

    --
    -------------------
    Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
    1. 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

      1. 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

        1. 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

    2. Hallo Rouven,

      ich habe das nun so implementiert, dass ich ein JWindow an der
      Cursorposition anzeigen lasse. Klappt wunderbar ;-)

      Gruss
      Christopher