【问题标题】:jfxtras CalendarTextField cannot be loaded in Scene Builderjfxtras CalendarTextField 无法在 Scene Builder 中加载
【发布时间】:2013-11-19 21:19:28
【问题描述】:

我正在使用 Netbeans 和 Scenebuilder 创建一个 JavaFX 项目。我意识到 Scenebuilder 没有日期选择器组件,所以我下载了 jfxtras 并将库添加到我的类路径中。我使用以下代码将 CalendarTextField 对象添加到我的 FXML 文件中:

 <?import jfxtras.labs.scene.control.*?> 

 <CalendarTextField fx:id="setupdate" prefWidth="200.0" showTime="true"  GridPane.columnIndex="3" GridPane.rowIndex="8" />

它似乎工作正常,但是,当我在 Scenebuilder 中打开我的 FXML 文件时,我收到以下错误:

    fxml:99: error: 
    javafx.fxml.LoadException: Element does not define a default property.

我不确定这是什么意思。

【问题讨论】:

    标签: javafx-2 fxml jfxtras


    【解决方案1】:

    Java 8 日期选择器

    使用Java 8 + SceneBuilder 2,它有一个DatePicker。

    两者都是抢先体验(尤其是 SceneBuilder 2)。暂时不要对 SceneBuilder 2 的稳定性抱有太大期望,它的实现目前相当粗糙,不如 SceneBuilder 1.1 完善。


    jfxtras 和 fxml

    关于在 SceneBuilder 1.1 中使用 jfxtras 控件,我的猜测是它不被支持。

    为了为 Java 7 构建 jfxtras 控件,jfxtras 开发人员有必要使用私有 API,因为 Java 8 中没有用于构建自定义控件的完整公共 API。使用私有 API 可能会导致兼容性不同 SceneBuilder 版本的问题,因为它将控制二进制文件绑定到仅适用于某些 JavaFX 版本(因为在新的 Java 版本中不保证私有 JavaFX api 的向后兼容性)。

    此外,jfxtras 开发人员可能没有实现使他们的控件与 FXML 一起工作所需的构建器类。情况似乎是这样,因为缺少合适的构建器会产生错误:javafx.fxml.LoadException: Element does not define a default property


    实现你自己的构建器

    您可以在Introduction to FXML 中阅读有关构建器和 fxml 的更多信息。如果你愿意,你可以为 jfxtras CalendarTextField 实现一个构建器(不过我不会在这个答案中写一个)。如果您确实实现了适当的构建器,那么您很有可能能够使用 SceneBuilder 1.1 使用的 FXML 中的控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多