2016-09-07 90 views
0

我是JavaFX 8的新手,并且我已经是JSF/Primefaces程序员一段时间了。我目前正在使用FXML和MVC模式处理JavaFX应用程序。我在为FXML GUI制作JPA 2.1实体的转换器时遇到问题,以及如何使用它们。在JSF/Primefaces中,这很简单直接,并且易于与转换器的特殊标签集成。我想知道是否有类似的JavaFX FXML解决方案。请我需要帮助。自定义对象转换器JavaFx FXML

+0

你是什么意思的“转换器”。你将他们转换成什么? –

+0

@James_D a Converter是一个接口,用于描述可以在模型数据对象之间执行“对象到字符串”和“字符串到对象”转换的Java类以及适合呈现的对象的字符串表示。 – cdaiga

+0

根据你实际在做什么,这个角色很可能是由一个单元承担的。例如。如果您在“TableView”中显示实体,则每列将定义一个返回单元实现的单元工厂。单元格定义如何呈现实体的属性(可能是简单的文本渲染,或更复杂的东西)。一些预定义的单元实现采用['StringConverter'](http://docs.oracle.com/javase/8/javafx/api/javafx/util/StringConverter.html)的实例,它实现了简单的对象String和String对象转换。 –

回答

1

与您所描述的最接近的相当可能是StringConverter类。对于虚拟化控件(例如ListViewTableView等)的所有built-in cell implementations都可以使用适当的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