2013-11-19 2 views
1

Я использую Netbeans и Scenebuilder для создания проекта JavaFX. Я понял, что у Scenebuilder нет компонента выбора даты, поэтому я загрузил jfxtras и добавил библиотеку в свой путь к классам. Я использовал следующий код для добавления объекта CalendarTextField к моему FXML файл:jfxtras CalendarTextField не может быть загружен в Scene Builder

<?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, поскольку функция public API для создания пользовательских элементов управления недоступна на Java 8. Использование частных API может привести к проблемы совместимости с различными версиями SceneBuilder, поскольку он связывает двоичные файлы управления только с некоторыми версиями JavaFX (поскольку обратная совместимость частной JavaFX apis не гарантируется в новых версиях Java).

Кроме того, разработчики jfxtras, возможно, не реализовали классы-конструкторы, необходимые для работы их элементов управления с FXML. Казалось бы, это так, потому что недостаток соответствующего строителя - это то, что порождает ошибку: javafx.fxml.LoadException: Element does not define a default property.


Реализация свой собственный строитель

Вы можете прочитать больше о строителей и FXML в Introduction to FXML. Вы можете реализовать построитель для jfxtras CalendarTextField, если хотите (я не буду писать один в этом ответе, хотя). Если вы реализовали соответствующий строитель, есть разумный шанс, что вы сможете использовать элемент управления в FXML, используемый SceneBuilder 1.1.

Смежные вопросы