3
我正嘗試將Javafx2.2應用程序遷移到Javafx8。我得到以下問題的同時使用嵌套FXML
:從Javafx2.2遷移到Javafx8
javafx.fxml.LoadException: Root hasn't been set.
Use method setRoot() before load.
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>
代碼:
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);
}
}
我需要page
節點在另一個BorderPane.center
設置。它適用於Javafx2.2。我在這裏錯過了什麼?任何幫助,將不勝感激。
這是TestController的代碼嗎?或從另一個控制器? FXML的嵌套在哪裏? – Puce
我在一個util函數中添加了這個片段。它需要參數'String fxml'(Path to new fxml)和bundle,並返回我用'BorderPane.center'附加的'Node'。 'BoarderPane.left'包含'menu'-通過點擊菜單我需要將'Node'添加到'BorderPane.center' –