Я новичок в JavaFX 8, и я уже давно программист JSF/Primefaces. В настоящее время я работаю над приложением JavaFX с шаблонами FXML и MVC. У меня есть проблема, заключающаяся в создании конвертеров моих объектов JPA 2.1 для графического интерфейса FXML и способах их использования. В JSF/Primefaces это просто и прямо и легко интегрируется со специальным тегом для преобразователей. Интересно, есть ли аналогичное решение для JavaFX с FXML. Пожалуйста, мне нужна помощь.Конвертер пользовательских объектов JavaFx FXML
ответ
Ближайший эквивалент того, что вы описываете, вероятно, является классом StringConverter
. Все built-in cell implementations для виртуализированных элементов управления (например, ListView
, TableView
и т. Д.) Могут быть сконфигурированы с соответствующим экземпляром StringConverter
. Кроме того, например, TextField
(или другое управление вводом текста) может иметь установленный на нем TextFormatter
, который, в свою очередь, может быть создан specifying a StringConverter
instance.
Так что если у вас есть класс сущности MyEntity
, вы можете создать строку нейтрализатор:
public class MyEntityStringConverter extends StringConverter<MyEntity> {
@Override
public String toString(MyEntity myEntity) {
return ... ;
}
@Override
public MyEntity fromString(String textSpecification) {
return ... ;
}
}
который вы затем сможете использовать во многих частях API.
Большое спасибо @James_D. Это то, чего я хотел. – cdaiga
Что вы подразумеваете под «преобразователями». Для чего вы их конвертируете? –
@James_D a Converter - это интерфейс, описывающий класс Java, который может выполнять преобразования Object-to-Object и String-to-Object между объектами данных модели и представление String тех объектов, которые подходят для рендеринга. – cdaiga
В зависимости от того, что вы на самом деле делаете, эту роль, вероятно, занимает клетка. Например. если вы показываете свои объекты в «TableView», каждый столбец определяет фабрику ячеек, которая возвращает реализацию ячейки. Ячейка определяет способ отображения свойства из объекта (это может быть простой текстовый рендеринг или что-то более сложное). Некоторые предопределенные реализации ячеек принимают экземпляр ['StringConverter'] (http://docs.oracle.com/javase/8/javafx/api/javafx/util/StringConverter.html), который преформирует простой объект - String и String -объектное преобразование. –