Wie der aktuelle eröffnete stage in JavaFX?
Gibt es eine Möglichkeit zu Holen Sie sich die aktuellen öffnete Stage in JavaFX, wenn es eine öffnen?
Etwas wie dieses:
Stage newStage = new Stage();
newStage.initOwner(JavaFx.getCurrentOpenedStage()); //Like this
AFAIK gibt es keine Möglichkeit, dies zu tun. Was ist der Kontext? Vielleicht gibt es einen anderen Weg, das zu tun, was Sie wollen. Wenn dies in Reaktion auf eine Benutzer-Aktion können Sie immer das Fenster mit den Fenster mit einem Knoten mit
Die Benachrichtigung zeigt im inneren eine "unendliche" Schleife in einem thread. In diesem thread, ich habe nicht den Verweis auf irgendwelche Fenster auf, weil der thread gestartet wird ab der ersten Anwendung Fenster (login-Fenster) geschlossen, nachdem der Benutzer am system anmeldet, aber der thread läuft weiter.
node.getScene().getWindow()
.Die Benachrichtigung zeigt im inneren eine "unendliche" Schleife in einem thread. In diesem thread, ich habe nicht den Verweis auf irgendwelche Fenster auf, weil der thread gestartet wird ab der ersten Anwendung Fenster (login-Fenster) geschlossen, nachdem der Benutzer am system anmeldet, aber der thread läuft weiter.
InformationsquelleAutor Mateus Viccari | 2015-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java 9 macht dies möglich, indem zusätzlich die
javafx.stage.Window.getWindows()
Methode. Daher kann man gerade mal die Liste von Windows und sehen, welcheInformationsquelleAutor Adam
Gibt es keine built-in-Funktionen für diese. In den meisten Fällen verwenden, öffnen Sie ein neues
Stage
als Folge der Benutzeraktion, so können Sie rufen SiegetScene().getWindow()
auf dem Knoten, auf dem die Aktion stattgefunden hat, um die "aktuellen" Fenster.In anderen Fällen verwenden, müssen Sie code schreiben, der zum nachverfolgen von aktuellen windows selbst. Natürlich, mehrere Fenster könnte offen sein, so müssen Sie zu verfolgen, Sie in irgendeiner Art von Sammlung. Ich würde empfehlen, eine factory-Klasse zum verwalten der Etappen und registrieren von Ereignishandlern für die Stufen öffnen und schließen, so dass Sie aktualisieren können, eine Eigenschaft und/oder eine Liste. Sie würde wahrscheinlich wollen, dass es ein singleton. Hier ist eine Beispiel-Implementierung: hier
getOpenStages()
gibt eine beobachtbare Liste der offenen Bühne - das Letzte ist das zuletzt geöffnete - undcurrentStageProperty()
gibt die konzentrierte Phase (wenn überhaupt). Ihre genaue Umsetzung kann unterschiedlich sein, je nach Ihren genauen Bedarf.Hinweis: dieses können Sie nur track-Stufen erhalten Sie von
StageFactory.INSTANCE.createStage()
oder angelegt an anderer Stelle und übergeben dieStageFactory.INSTANCE.registerStage(...)
Methode, so dass Ihr code hat die Zusammenarbeit mit diesen Anforderungen. Auf der anderen Seite, es gibt Ihnen die chance, sich zu zentralisieren-code initialisiert, dass Ihre Stufen, die ansonsten möglicherweise von Vorteil.Hier ist ein einfaches Beispiel für die Verwendung dieser:
InformationsquelleAutor James_D
Wenn Sie brauchen, um die aktuelle Phase Referenz innerhalb einer event-handler-Methode, können Sie es aus dem ActionEvent param. Zum Beispiel:
Können Sie auch von jeder Kontrolle erklärt, in Ihrem controller:
InformationsquelleAutor Nelio Alves
Können Sie ein label erstellen, die in Ihrer java fxml.
Dann in deiner controller-Klasse finden Sie Ihr label so :
@FXML
private Label label;
Dann in jeder Funktion der controller-Klasse können Sie auf die aktuelle Phase, die von dieser code-block :
InformationsquelleAutor Salman Saleh