2016-09-07 3 views
0

Я новичок в JavaFX 8, и я уже давно программист JSF/Primefaces. В настоящее время я работаю над приложением JavaFX с шаблонами FXML и MVC. У меня есть проблема, заключающаяся в создании конвертеров моих объектов JPA 2.1 для графического интерфейса FXML и способах их использования. В JSF/Primefaces это просто и прямо и легко интегрируется со специальным тегом для преобразователей. Интересно, есть ли аналогичное решение для JavaFX с FXML. Пожалуйста, мне нужна помощь.Конвертер пользовательских объектов JavaFx FXML

+0

Что вы подразумеваете под «преобразователями». Для чего вы их конвертируете? –

+0

@James_D a Converter - это интерфейс, описывающий класс Java, который может выполнять преобразования Object-to-Object и String-to-Object между объектами данных модели и представление String тех объектов, которые подходят для рендеринга. – cdaiga

+0

В зависимости от того, что вы на самом деле делаете, эту роль, вероятно, занимает клетка. Например. если вы показываете свои объекты в «TableView», каждый столбец определяет фабрику ячеек, которая возвращает реализацию ячейки. Ячейка определяет способ отображения свойства из объекта (это может быть простой текстовый рендеринг или что-то более сложное). Некоторые предопределенные реализации ячеек принимают экземпляр ['StringConverter'] (http://docs.oracle.com/javase/8/javafx/api/javafx/util/StringConverter.html), который преформирует простой объект - String и String -объектное преобразование. –

ответ

1

Ближайший эквивалент того, что вы описываете, вероятно, является классом 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.

+0

Большое спасибо @James_D. Это то, чего я хотел. – cdaiga