JavaFX SceneBuilder 2.0无法打开以fx:root作为主要布局标记的自定义组件的FXML。

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

还必须说明的是:在应用程序中,通过代码设置根节点可以很好地加载此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>

enter image description here

正如您所看到的,Oracle 告诉我们:删除 NetBeans IDE 自动创建的 AnchorPane 标记。

但是这并没有起作用。

更新

SceneBuilder 2.0 Build 7 - 问题仍然存在

JDK8 b117 - 问题仍然存在

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


默认情况下,场景构建器提供锚定窗格,并且最好在锚定窗格中工作... 这样更可靠。 - Anshul Parashar
Ashul,我只是尝试做教程示例的练习。 - Dmitry Nelepov
是的,我已经阅读了它。很抱歉我没找到为什么它不起作用...也许这可以帮助你。 - Anshul Parashar
我已经向Oracle报告了此事:https://javafx-jira.kenai.com/browse/DTL-5968 - Dmitry Nelepov
1
@paqogomez 我感觉有些标签丢失了,所以我才这样做...我以后会做得更好的。 - Anshul Parashar
显示剩余5条评论
2个回答

1

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 dev release:

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

目前不确定解决方法,除了不断切换fx:root以使用具体的容器对象。很遗憾。

  • chooks

出现在版本:2.0-b10,变更集:48fc80a12d33。 - chooks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接