jfxtras无法在Scene Builder中加载CalendarTextField

时间:2013-11-19 21:19:28

标签: javafx-2 fxml jfxtras

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

我不确定这意味着什么。

1 个答案:

答案 0 :(得分:1)

Java 8 DatePicker

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

两者都是早期访问(特别是SceneBuilder 2)。不要期待SceneBuilder 2的稳定性有一段时间,它的实现目前非常粗糙,并不像SceneBuilder 1.1那样精致。


jfxtras和fxml

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

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

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


实施您自己的构建器

您可以在Introduction to FXML中详细了解构建器和fxml。如果你愿意,你可以为jfxtras CalendarTextField实现一个构建器(虽然我不会在这个答案中写一个)。如果你确实实现了一个合适的构建器,那么你就有可能在SceneBuilder 1.1使用的FXML中使用该控件。