JavaFX: Können Sie eine Bühne erstellen, die nicht in der Taskleiste angezeigt wird und nicht dekoriert ist?

8

Ich versuche, eine Bühne zu erstellen, die nicht in der Windows-Taskleiste angezeigt wird und nicht dekoriert ist (keine Rahmen und keine Schaltflächen zum Schließen / Minimieren / Maximieren). Mein Endziel ist es, eine Taskleistensymbol-Anwendung zu erstellen, die Benachrichtigungsfenster öffnet.

Es ist ähnlich zu dieser Frage wo ich das Verhalten von StageStyle.UTILITY (das verhindert, dass die Bühne in der Taskleiste angezeigt wird) und StageStyle.TRANSPARENT (das ist ein völlig undekoriertes Fenster) möchte.

Die referenzierte Frage funktioniert nicht für mich, da ich keine übergeordnete Stufe habe, von der aus ein modales Fenster erstellt werden könnte. Irgendwelche Ideen, wie man das zum Laufen bringt? Danke

    
dejuknow 03.07.2014, 22:21
quelle

4 Antworten

10

Ich konnte dieses Problem mit dem folgenden Code umgehen:

%Vor%

StageStyle.UTILITY vermeidet das Erstellen eines Taskleistensymbols. Ich setze die Breite und Höhe auf 0, mache das Fenster klein und verwende dann stage.setX (Double.MAX_VALUE), um es weit vom Bildschirm entfernt zu platzieren, so dass es nicht erscheint. Es ist ein bisschen hokey, aber es scheint gut zu funktionieren.

    
dejuknow 29.08.2014, 04:48
quelle
6

JavaFX unterstützt die angeforderte Funktion nicht

Sie können nicht das tun, was Sie fragen (kein Taskleistensymbol für eine undekorierte oder transparente Phase anzeigen), wenn Sie nur die Kernklassen von Java 8 verwenden.

Wenn Sie möchten, können Sie im JavaFX-Issue Tracker eine Funktion anfordern.

Sie könnten einen nativen JNI-Code schreiben und Windows vielleicht sagen, dass er nicht angezeigt werden soll ein Taskleistensymbol für Ihre Anwendung. Ich weiß nicht, wie du das machen würdest.

Vorschlag für Taskleistensymbole

Ich denke, es ist ziemlich normales Windowing-Toolkit-Verhalten, das Hauptanwendungsfenster in der Taskleiste zu zeigen, wenn das Hauptanwendungsfenster nicht ausgeblendet ist, also schlage ich vor, dieses Standardverhalten nicht zu umgehen.

Vorschlag für Benachrichtigungen und Taskleistensymbole

Dies steht nicht in direktem Zusammenhang mit dem Titel Ihrer Frage, sondern ist nur ein Kommentar zum Endziel Ihrer Aufgabe - Benachrichtigungen für Taskleistensymbole.

Die meisten Tray-basierten Anwendungen, die ich gesehen habe, haben kein Taskleistensymbol, wenn das mit dem Tray-Icon verbundene Fenster ausgeblendet ist, aber ein Taskleistensymbol, wenn das mit dem Tray-Icon verbundene Fenster angezeigt wird Sie bleiben bei diesem Setup.

Auch Benachrichtigungen sind ein Standardbestandteil der System-Tray-Icon-Infrastruktur selbst. Daher schlage ich vor, dass Sie die Standardmechanismen für System-Tray-Icon-Benachrichtigungen verwenden, anstatt Ihre eigenen zu verwenden. Auf diese Weise kann der Benutzer auch konfigurieren, ob das Taskleistensymbol und seine Benachrichtigungen mithilfe des standardmäßigen OS-Taskleistensymbols und der UIs für die Benachrichtigungsverwaltung angezeigt werden.

Ich habe eine Beispielanwendung erstellt, die die AWT SystemTray-API verwendet, um eine Systemablage für eine JavaFX-Anwendung bereitzustellen, die einige verwendet der Vorschläge aus diesem Abschnitt. Sie können es ausprobieren, wenn Sie möchten.

Die volle System Tray-Unterstützung kommt zu JavaFX (wahrscheinlich mit Java 9), wenn RT-17503 System Tray-Unterstützung bietet ist implementiert.

    
jewelsea 28.08.2014 00:21
quelle
2

Diese Frage ist nicht wirklich frisch, aber ich hatte das gleiche Problem und fand zunächst keine Lösung, aber hier ist mein Workaround:)

Die beste Lösung, die ich gefunden habe, war, das primaryStage auf style Utility zu setzen und alle childStages auf Style Undecorated zu setzen. Setzen Sie dann die Deckkraft von primaryStage auf 0.0, so dass sie nicht sichtbar ist: PrimärerStage:

%Vor%

Kinder:

%Vor%

Beispielcode

%Vor%     
Kanashius 02.06.2017 11:55
quelle
0

JavaFX unterstützt das.

Fügen Sie die Methode main () nicht in Ihre Anwendungsklasse ein. Erstellen Sie einfach eine andere Klasse als Hauptklasse:

%Vor%     
Michel Moreira 16.05.2015 07:28
quelle

Tags und Links