Migrare da Javafx 2.2 a JavaFX 8
Domanda
Sto cercando di migrare l'applicazione JAVAFX2.2 a JAVAFX8.Sto ricevendo il problema durante l'utilizzo di FXML
nidificato:
javafx.fxml.LoadException: Root hasn't been set.
Use method setRoot() before load.
.
File FXML:
<fx:root type="javafx.scene.layout.VBox"
xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx/8"
fx:controller="com.ui.TestController">
<TextField fx:id="textField"/>
<Button text="Click Me"/>
</fx:root>
.
Codice:
FXMLLoader loader = new FXMLLoader();
loader.setResources(bundle);
InputStream in = Main.class.getClassLoader().getResourceAsStream(fxml);
loader.setBuilderFactory(new JavaFXBuilderFactory());
loader.setLocation(Main.class.getResource(fxml));
Node page = null;
try {
page = (Node) loader.load(in);
} catch (IOException e) {
logger.error("{}", e);
} finally {
try {
in.close();
} catch (IOException e) {
logger.error("{}", e);
}
}
.
Ho bisogno del nodo page
per impostare in un altro BorderPane.center
.Funziona con JAVAFX2.2.Quello che mi manca qui?Qualsiasi aiuto sarebbe apprezzato.
Soluzione
L'utilizzo di <VBox></VBox>
anziché <fx:root type="javafx.scene.layout.VBox"></fx:root>
ha risolto questo problema, almeno per JAVAFX Build b121
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow