[GUI] Komponenten auf den Desktop "kleben", kein Eintrag in Taskleiste

apric

Erfahrenes Mitglied
Ich habe vor, mir einen eigenen sog.
"Desktop Calendar" zu basteln, evtll. dann auch gleich mit JavaFX.

Das Problem:

Wie kriege ich Java-Komponenten (Swing oder halt gleich JavaFX-Zeug) direkt auf den Desktop "geklebt"?

(erstmal ziemlich Windows-spezifisch)

- die Anwendung hat nur ein Tray Icon, keinen Eintrag in der Taskleiste (!)
- die Anwendung ist immer die "unterste" unter allen anderen Fenstern, man sieht sie also wirklich nur, solange man etwas vom Desktop sieht


ein Beispiel, wie sowas aussieht (benutze ich seit Jahren, unglaublich praktisch):

http://tinnes.org.uk/desktopcalendar/about.htm


Es gibt auch allerlei andere solche Kalender, u.a. für "Active Desktop" (das beschreibt auch so ziemlich das, was ich haben will).

Ich wills halt nur selbst schreiben, in Java :P


Ich habe ja schon ein wenig mit dem SystemTray rumgespielt, sobald ich z.B. ein JFrame mit setvisible(false) verstecke, verschwindet der Eintrag in der Taskleiste, das JFrame damit aber leider natürlich auch :(
Und das mit dem "auf dem Desktop kleben" - da hab ich 0 Ideen.

Veilleicht hat da jemand eine Idee, ob das überhaupt mit 1.6 funktioniert?
 
Hi,

vielleicht hilfst Dir dieses Beispiel weiter:
http://www.kodejava.org/examples/313.html

Wenn Du jetzt noch JFrame durch JWindow ersetzt ist auch der Eintrag in der Taskleiste weg.

Ab Java 6 Update 10 kannst Du auch die Form und die Tranparenz des Fensters ändern.

Java:
// Transparenz
 window.getContentPane().setBackground(Color.BLUE);
  AWTUtilities.setWindowOpacity(window, Float.valueOf(0.25f));
        
// Form
Shape shape = null;
shape = new Ellipse2D.Float(0, 0, window.getWidth(), window.getHeight());
AWTUtilities.setWindowShape(window, shape);

Näheres siehe hier: Setting-the-Shape-of-a-Window

Gruß
Joschi
 
Zuletzt bearbeitet:
Das ist schonmal ein Schritt, ich hab gestern mal mit JavaFX rumgespielt und eine rudimentäre Oberfläche gebaut (siehe Anhang).

Die "Stage" ist ebenfalls "undecorated" und baut seine Controls selbst (Schließen, Resize).
Das müsste ich ja nur in ein JWindow oder einen JDialog packen, sodass kein Eintrag in der Taskleiste mehr auftaucht (sollte kein Problem sein) - soweit so gut.


Nur wie kriege ich das ganze nun auf den Desktop geklebt, d.h. immer als "unterste" aller Anwendungen?
Lässt sich aus dem JVM-Käfig irgendwie der Task-Kontext herausfinden, sodass ich darauf irgendwie einen Listener oder einen Thread ansetzen kann, um die GUI immer in den Hintergrund zu schicken?
Andere Möglichkeiten?
 

Anhänge

  • calendar_gui.jpg
    calendar_gui.jpg
    28,4 KB · Aufrufe: 65
Zurück