Javafx 2 无法在场景生成器中加载jfxtras CalendarTextField

Javafx 2 无法在场景生成器中加载jfxtras CalendarTextField,javafx-2,fxml,jfxtras,Javafx 2,Fxml,Jfxtras,我正在使用Netbeans和Scenebuilder创建一个JavaFX项目。我意识到Scenebuilder没有日期选择器组件,所以我下载了jfxtras并将该库添加到我的类路径中。我使用以下代码将CalendarTextField对象添加到我的FXML文件中: <?import jfxtras.labs.scene.control.*?> <CalendarTextField fx:id="setupdate" prefWidth="200.0" showTime=

我正在使用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" />
我不确定这是什么意思。

Java8日期选择器

使用+,它有一个日期选择器

两者都是早期访问(尤其是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 API的向后兼容性)

此外,jfxtras开发人员可能没有实现使其控件与FXML一起工作所需的生成器类。这种情况似乎是这样的,因为缺少合适的构建器是产生错误的原因:
javafx.fxml.LoadException:Element没有定义默认属性


实现您自己的构建器

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

Java8DatePicker

使用+,它有一个日期选择器

两者都是早期访问(尤其是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 API的向后兼容性)

此外,jfxtras开发人员可能没有实现使其控件与FXML一起工作所需的生成器类。这种情况似乎是这样的,因为缺少合适的构建器是产生错误的原因:
javafx.fxml.LoadException:Element没有定义默认属性


实现您自己的构建器

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

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