我正在使用 JavaFX 并尝试使用 FXML,但是我从未接受过任何形式的正式培训,所以我有点磕磕绊绊。
我一直遇到这个错误: 引起原因:javafx.fxml.LoadException:元素未定义默认属性。
我的目标是尝试初始化一个运行自己的 FXML 文件的自定义 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>
Controller 和根在 Controller 方法中设置。
我正在尝试使此代码适应我自己的需求,我想知道是否有人可以向我解释为什么如果 fx:root type="javafx.scene.layout.VBox"发生更改,会出现此错误类似于 fx:root type="javafx.scene.Parent"如果您需要的话,我可以发布一些实际的代码示例。
最佳答案
引入默认属性的概念是为了缩短您实际上必须编写的 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
关于javafx - 元素未定义默认属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193519/