2013-03-29 20 views
5

ist es möglich, eine Bühne auf dem Desktop zu kleben?Wie man ein JavaFX-Widget erstellt

Ich möchte meine Anwendung als Widget, also wenn es gestartet wird, sollte es direkt über dem Desktop angezeigt werden und nicht vor der aktuellen Anwendung, die möglicherweise geöffnet werden.

Die andere Bedingung für ein Widget wäre, dass es keinen Eintrag in der Taskleiste hat. Ist das auch möglich?

+0

Werfen Sie einen Blick auf http://www.youtube.com/watch?v=IFIlr6cpX64 –

+0

Sie können dies nicht direkt in Java tun, sie sind in HTML und Javascript eingebaut. –

Antwort

6

Ich versuchte dies mit JavaFX 2.2 und hatte folgende Ergebnisse:

so, wenn es beginnt es direkt über dem Desktop angezeigt werden soll und nicht vor der aktuellen Anwendung, die

geöffnet werden könnte

Aufruf stage.toBack wird eine Bühne hinter anderen Fenstern platzieren.

Ich konnte ein Fenster bekommen, um immer die meiste Zeit hinter anderen Fenstern zu bleiben (zumindest auf einem Mac). Um dies zu tun, fügte ich ein paar Zuhörer und Filter hinzu, bevor ich die Bühne in einem clock application zeigte.

stage.focusedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> observableValue, Boolean wasFocused, Boolean focused) { 
    stage.toBack(); 
    } 
}); 

stage.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() { 
    @Override 
    public void handle(MouseEvent mouseEvent) { 
    stage.toBack(); 
    } 
}); 

Es ist eine bestehende Forderung nach einer Möglichkeit, ein stage to always be on top einzustellen. Du könntest eine neue entsprechende Anfrage für eine Fähigkeit erstellen, damit eine Stufe immer dahinter steckt.

Die andere Bedingung für ein Widget wäre, dass es in der Taskleiste

Auf Windows keinen Eintrag hat, denke ich, wenn Sie init the stage style-StageStyle.UTILITY, dann wird Windows ein Symbol nicht für die Bühne zeigt in die Windows-Taskleiste.

Ich habe ein paar verschiedene Bühnenstile auf OS X versucht und ein kleines Java-Pokal-Icon würde immer im OS X-Dock angezeigt, wenn ich die App lief und (im Gegensatz zu Windows) icons for the stage den Java-Cup nicht los wurde Symbol. Wenn Sie beispielsweise eine OS X-Anwendung self-contained erstellen, können Sie das Symbol während des Verpackungsschritts deaktivieren oder das Symbol auf ein transparentes Bild setzen, damit es für den Benutzer nicht sichtbar ist.

Sie könnten auch eine Feature-Anfrage für diese (getrennt von der immer nach hinten) in der JavaFX issue tracker erstellen. Wenn Sie damit zusammenhängende Probleme erstellen, erklären Sie Ihren Anwendungsfall und verlinken Sie auf diese Frage zurück.

+0

Diese Lösung funktionierte perfekt für mich auf Windows, obwohl ich das Fenster nicht aus der Taskleiste verstecken muss. Ich denke jetzt, mit JavaFX 8, wo wir eine 'alwaysOnTop'-Funktionalität haben, sollte es eine ähnliche Sache geben, damit das Fenster immer zurückbleibt. Weiß jemand, ob es ein Problem mit dem offiziellen Issue Tracker gibt? – RegisteredUser

+0

Ich weiß nicht, ob eine Feature-Anfrage erstellt wurde. Wenn Sie möchten, können Sie den Issue-Tracker durchsuchen und einen erstellen, wenn noch keine Feature-Anfrage vorliegt. – jewelsea