gpt4 book ai didi

java - 如何在JavaFX的TableView中自定义setCellValueFactory的功能

转载 作者:行者123 更新时间:2023-12-01 19:34:16 27 4
gpt4 key购买 nike

我有一个 Kotlin 数据类:

data class DataContainer(var descriptor: String = "",
var amount: Double = 0.0,
val composition: MutableMap<String, Double> = mutableMapOf(),
var date: LocalDate = now())

此实例应作为条目添加到 JavaFX TableView 中。添加除组合之外的所有内容均符合 TableColumn 的标准

.setCellValueFactory(new PropertyValueFactory<>())

使用PropertyValueFactory的<>中的相关类型和()中的名称,例如:

tableColumnDC_date.setCellValueFactory(new PropertyValueFactory<DataContainer, LocalDate>("date"));

不幸的是,组合 (Hash)Map 的情况有点复杂。仅使用上述标准程序,我就得到了非常丑陋的输出到相关列

tableColumnDC_comp.setCellValueFactory(new PropertyValueFactory<DataContainer, HashMap<String, Double>>("composition"));

这就是为什么我想自定义 setCellValueFactory 方法。

我想生成一个自定义的输出字符串,因为包含“\n”的字符串是在单行中整齐地组织输出的最简单方法。有什么建议吗?

最佳答案

您可以将任何您想要的字符串值放入单元格中,方法是将其包装在 setCellValueFactory 中创建的 ReadOnlyStringWrapper 中。它是比 PropertyValueFactory 更好的选择,因为它不使用反射,因此类型安全。

例如,下面的代码将为您提供 map 中以换行符分隔的所有值。

tableColumnDC_comp.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getMap().values().stream().collect(Collectors.joining("\n")));

关于java - 如何在JavaFX的TableView中自定义setCellValueFactory的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com