我有一个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“的字符串是在单行中整洁地组织输出的最简单方法。有什么建议吗?
发布于 2019-10-17 02:24:52
您可以将任意字符串值放入单元格中,方法是将其包装在setCellValueFactory中创建的ReadOnlyStringWrapper中。它是一个比PropertyValueFactory更好的选择,因为它不使用反射,所以类型安全。
例如,下面的代码将为您提供由换行符分隔的映射中的所有值。
tableColumnDC_comp.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getMap().values().stream().collect(Collectors.joining("\n")));
https://stackoverflow.com/questions/58418282
复制相似问题