Ich möchte den Controller aus einer Szene holen, die ich mit FXMLoader geladen habe. Der Anwendungsfall ist:JavaFX 2.0 + FXML. Aktualisieren von Szenenwerten von einer anderen Task
- Mein JSON-Manager erhält ein JSON-Objekt
Die Aufgabe, die ich ins Leben gerufen habe eine neue Szene
Parent p = FXMLLoader.load(getClass().getResource("foo.fxml")); Scene scene = new Scene(p); stage.setScene(scene);
Danach verwenden, i die leere Szene hat.
Jetzt kann ich das die Komponenten
AnchorPane pane = (AnchorPane)((AnchorPane) scene.getRoot()).getChildren().get(0); for(Node node : pane.getChildren()){ String id = node.getId(); if(id.equals(NAME)){ ((TextField)node).setText(value); } }
Meine Frage zu füllen, ist es ein einfacher Weg, dies zu tun? Ich habe einen Controller in FXML angegeben
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="526.0" minWidth="356.0" prefHeight="526.0" prefWidth="356.0"
xmlns:fx="http://javafx.com/fxml" fx:controller="bar.foo">
Ich möchte die Instanz mit den bind Werte erhalten (TextField- in diesem Fall genannt Name)
Vielen Dank im Voraus
Vielen Dank für Ihre Antwort, es war ein Punkt mit node.lookup. Die Art, wie Sie den Controller aufrufen, funktioniert bei mir nicht, weil ich die aktuelle Controller-Instanz brauche. Auf diese Weise wird ein neuer Controller und ein neuer Bereich erstellt. – Javier
warum? Verwenden Sie diesen Code anstelle von 'FXMLLoader.load (getClass(). GetResource (" foo.fxml "));' und Sie erhalten den gleichen Bereich wie in Ihrem Code. –
@Javier. Die Antwort wurde aktualisiert. Bitte guck dir das an. –