我有一个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”的字符串是在一行中整齐地组织输出的最简单方法。有什么建议? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 通过将所需的任何String值包装在setCellValueFactory中创建的ReadOnlyStringWrapper中,可以将其放入单元格中。与PropertyValueFactory相比,它是一个更好的选择,因为它不使用反射,因此类型安全。例如,下面的代码将为您提供地图中由换行符分隔的所有值。tableColumnDC_comp.setCellValueFactory(data -> new ReadOnlyStringWrapper(data.getValue().getMap().values().stream().collect(Collectors.joining("\n"))); (adsbygoogle = window.adsbygoogle || []).push({}); 10-06 11:51