質問

javafx2.2アプリケーションをjavafx8に移行しようとしています。ネストされたFXMLを使用している間は、次の問題が発生します。

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で動作します。私がここにいないこと?あらゆる助けが高くなるでしょう。

役に立ちましたか?

解決

<VBox></VBox>の代わりに<fx:root type="javafx.scene.layout.VBox"></fx:root>を使用して、この問題を修正しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top