javafx - 元素未定义默认属性

标签 javafx fxml

我正在使用 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/

相关文章:

java - MySQL:插入查询中出现引号 -> ( ' ) and double quotation -> ( ") 错误

java - 将组件保留在后台以便稍后在 javafx 中重用它们

java - 有没有一种方法可以在不使用 Netbeans、Eclipse 或场景生成器的情况下创建 FXML/Javafx 桌面应用程序?

java - 如何在 FXML 中显示和访问由 Java 类创建的 ComboBox?

java - 通过fxml添加EventFilter

JavaFX:一次有 2 个独立的窗口

java - getResource() 方法在加载字体文件时返回 null,但为什么呢?

JavaFX ImagePane 调整大小质量差

multithreading - 如何使Task的updateMessage()立即生效?

java - 更改/更新另一个类中的 FXML 组件