jfxtras CalendarTextField не может быть загружен в Scene Builder
Я использую 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" />
Похоже, все работало нормально, но когда я открыл свой файл FXML в Scenebuilder, я получил следующую ошибку:
fxml:99: error:
javafx.fxml.LoadException: Element does not define a default property.
Я не уверен, что это значит.
1 ответ
Java 8 DatePicker
Используйте Java 8 + SceneBuilder 2, у него есть DatePicker.
Оба имеют ранний доступ (особенно SceneBuilder 2). Не стоит долго ожидать стабильности SceneBuilder 2, его реализация в настоящее время довольно грубая и не такая отточенная, как SceneBuilder 1.1.
jfxtras и fxml
Что касается использования элементов управления jfxtras в SceneBuilder 1.1, я предполагаю, что это просто не поддерживается.
Чтобы создать элементы управления jfxtras для Java 7, разработчикам jfxtras необходимо было использовать частные API, так как общедоступные API с полным набором функций для создания пользовательских элементов управления недоступны в Java 8. Использование частных API может вызвать проблемы совместимости с различными Версии SceneBuilder, поскольку он связывает двоичные файлы управления для работы только с определенными версиями JavaFX (поскольку обратная совместимость частного JavaFX apis не гарантируется в новых версиях Java).
Кроме того, разработчики jfxtras, возможно, не реализовали классы построителя, необходимые для работы их элементов управления с FXML. Казалось бы, это так, так как отсутствие соответствующего компоновщика и вызывает ошибку: javafx.fxml.LoadException: Element does not define a default property
,
Реализация собственного строителя
Вы можете узнать больше о сборщиках и fxml в разделе Введение в FXML. Вы можете реализовать конструктор для jfxtras CalendarTextField
если хотите (я не буду писать один в этом ответе). Если вы внедрили соответствующий компоновщик, есть реальная вероятность, что вы сможете использовать элемент управления в FXML, используемый SceneBuilder 1.1.