2016-09-07 167 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