相关疑难解决方法(0)

JavaFX SceneBuilder 2.0不会为fx:root作为主布局标记的自定义组件打开FXML

我有自定义组件与FXML文件的布局,包含行

<fx:root type="javafx.scene.layout.VBox" spacing="10.0" xmlns:fx="http://javafx.com/fxml">
Run Code Online (Sandbox Code Playgroud)

我在SceneBuilder 1.0上创建了这个文件,但是我尝试在SceneBuilder 2.0上打开这个文件,我得到了Exception

java.io.IOException: javafx.fxml.LoadException: Root hasn't been set. Use method setRoot() before load.
/Users/dmitrynelepov/Development/SogazGit/smpb/SMProjectBrownRelease/SMPBProxy/engine/fxml/component_daemon_viewer.fxml:14
Run Code Online (Sandbox Code Playgroud)

还必须告诉:在应用程序中,这个fxml加载很好,通过代码设置root.

在官方教程(http://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm)中告诉:

<fx:root type="javafx.scene.layout.VBox" xmlns:fx="http://javafx.com/fxml">
    <TextField fx:id="textField"/>
    <Button text="Click Me" onAction="#doSomething"/>
</fx:root>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您所见,Oracle告诉您:删除NetBeans IDE自动生成的AnchorPane标记.

但它不起作用.

UPDATE

SceneBuilder 2.0 Build 7 - 问题仍然存在

JDK8 b117 - 问题依然存在

链接JIRA:https://javafx-jira.kenai.com/browse/DTL-5968

javafx scenebuilder javafx-8

6
推荐指数
1
解决办法
4929
查看次数

从Javafx2.2迁移到Javafx8

我正在尝试将Javafx2.2应用程序迁移到Javafx8.我在使用嵌套时遇到以下问题FXML:

javafx.fxml.LoadException: Root hasn't been set.
Use method setRoot() before load.
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要page在另一个节点中设置节点BorderPane.center.它适用于Javafx2.2.我在这里缺少什么?任何帮助,将不胜感激.

fxml javafx-8

3
推荐指数
1
解决办法
2621
查看次数

标签 统计

javafx-8 ×2

fxml ×1

javafx ×1

scenebuilder ×1