6

我在包含行的 FXML 文件上有带有布局的自定义组件

<fx:root type="javafx.scene.layout.VBox" spacing="10.0" xmlns:fx="http://javafx.com/fxml">

我在 SceneBuilder 1.0 上创建了这个文件,但后来我尝试在 SceneBuilder 2.0 上打开这个文件我得到了异常

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

还必须说明:在应用程序中,通过代码设置 root 可以很好地加载这个 fxml。

在官方教程(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>

在此处输入图像描述

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

但它不起作用。

更新

SceneBuilder 2.0 Build 7 - 问题仍然存在

JDK8 b117 - 问题仍然存在

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

4

2 回答 2

1

感谢 SceneBuilder 开发人员。

https://javafx-jira.kenai.com/browse/DTL-5968的错误已修复。

在 SceneBuilder 2.0 build 9 上 - 问题得到了解决。

问题关闭。

于 2013-12-21T18:52:30.147 回答
0

对我来说不是很固定。我仍然收到此错误。

java.io.IOException: javafx.fxml.LoadException: Root hasn't been set. Use method setRoot() before load. 
/C:/path-to-my-fxml/foo.fxml:11

at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:86)
at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:74)

使用最新版本的 Scenebuilder 2.0 开发版:

Build Information Version: 2.0-b09, Changeset: 12f988d79fe6 Date:
2013-12-19 09:33

除了继续为具体容器对象切换 fx:root 之外,目前不确定解决方法是什么。真可惜。

  • chooks
于 2014-01-16T16:47:20.587 回答