gpt4 book ai didi

Java setCellValueFactory lambda 表达式(当可能为 null 时)

转载 作者:行者123 更新时间:2023-12-02 13:42:14 26 4
gpt4 key购买 nike

我有以下代码行在 JavaFX 中设置列​​:

branchActionColumn.setCellValueFactory(cd -> cd.getValue().getAction().getTextProperty());

这通常工作得很好。但是,有时 getAction() 返回 null(这可能是正常行为)。在这种情况下,我只想显示空字符串“”。我怎样才能做到这一点?

我已经尝试过:

branchActionColumn.setCellValueFactory(cd -> (cd.getValue().getAction() == null) ? new SimpleStringProperty("") : cd.getValue().getAction().getTextProperty());

虽然这在 TableView 中显示属性的初始值,但对该属性所做的任何后续更改都不会反射(reflect)在 TableView 中。我相信这是因为我正在 lambda 表达式中创建一个新属性。

如果我返回到 branchActionColumn.setCellValueFactory(cd -> cd.getValue().getAction().getTextProperty()); 行,那么只要属性发生更改,TableView 就会做出适当的响应。这就是我想要的行为。我只是还希望它能够处理 getAction() 返回 null 的情况。

这里有一个类似的问题,但它是针对 C# 的,与 CellValueFactory 无关:C#, in List<>.ConvertAll method using lambda expression, how to make a filter when the object is null?

最佳答案

尝试使用可选

branchActionColumn.setCellValueFactory(cd -> 
Optional.ofNullable(cd.getValue().getAction())
.map(action -> action.getTextProperty())
.orElseGet(() -> new SimpleStringProperty(""))
);

关于Java setCellValueFactory lambda 表达式(当可能为 null 时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680574/

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