元素未定义默认属性

时间:2014-04-21 08:14:52

标签: javafx fxml

我正在使用JavaFX并尝试使用FXML,但是我从来没有接受过任何形式的正式培训,所以我有点磕磕绊绊。

我一直在遇到这个错误: 引起:javafx.fxml.LoadException:元素没有定义默认属性。

我的目标是尝试初始化运行自己的FXML文件的Custom Controller类。因此,Oracle提供的代码示例如下所示:

<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>

其中控制器和root在Controller方法中设置。

我试图根据自己的需要调整此代码,我想知道是否有人可以向我解释为什么如果fx:root type =&#34; javafx.scene.layout出现此错误。垂直框&#34;永远改变成像fx:root type =&#34; javafx.scene.Parent&#34;如果你想要我,我可以发布一些实际的代码样本。

1 个答案:

答案 0 :(得分:3)

引入默认属性的概念是为了将你的FXML短路实际上你必须写:

<fx:root type="javafx.scene.layout.VBox" xmlns:fx="http://javafx.com/fxml"> 
  <children>
    <TextField fx:id="textField"/>
    <Button text="Click Me" onAction="#doSomething"/>
  </children>
</fx:root>

如果您现在将容器类型更改为Parent并且浏览父类,您将注意到它没有定义您隐式假设的子属性 - Pane引入了子项。

您应该阅读http://docs.oracle.com/javafx/2/api/javafx/fxml/doc-files/introduction_to_fxml.html