【问题标题】:Custom Object converter JavaFx FXML自定义对象转换器 JavaFx FXML
【发布时间】:2016-09-07 13:09:14
【问题描述】:

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

【问题讨论】:

  • “转换器”是什么意思。你要把它们转换成什么?
  • @James_D a Converter 是一个描述 Java 类的接口,该类可以在模型数据对象和适合渲染的那些对象的字符串表示之间执行对象到字符串和字符串到对象的转换.
  • 根据你实际在做什么,这个角色可能由一个细胞承担。例如。如果您在TableView 中显示您的实体,则每列定义一个返回单元实现的单元工厂。单元格定义实体的属性如何呈现(可能是简单的文本呈现,或者更复杂的东西)。一些预定义的单元实现采用StringConverter 的实例,它执行简单的对象-字符串和字符串-对象转换。
  • 如果你能更具体一些,你可能会得到一个更具体的答案。就您的问题而言,它有点过于笼统,无法真正提供完整的答案。大概您有一个从某种 DAO 获得的实体列表,并希望以某种方式显示该列表。那么,您如何显示它们(TableViewTreeViewListView 等),以及您希望它们如何呈现等?
  • 对于TextField,可以设置TextFormatter,也可以instantiate with an instance of StringConverter...。所以可能创建StringConverter 实现是您在这里寻找的。​​span>

标签: java javafx-8 converter fxml jpa-2.1


【解决方案1】:

与您所描述的最接近的可能是 StringConverter 类。所有用于虚拟化控件的built-in cell implementations(例如ListViewTableView 等)都可以使用适当的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。这就是我想要的。
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 2017-07-15
  • 1970-01-01
  • 2013-11-04
  • 2014-10-10
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多