小编omn*_*nom的帖子

JavaFX:如果需要使用 PropertyValueFactory 该怎么办

在我的表格中,我有一个单元格如果不与表格交互就不会更新。

我已经在这里找到了原因Java: setCellValuefactory; Lambda 与 PropertyValueFactory;优点缺点

我的问题是,单元格项目的默认值是LocalDate.MIN,只要该项目具有此默认值,我希望我的单元格包含“---”。当我更新项目时,我希望单元格包含当前日期字符串。

物品类别:

public class ItemEv {
    private final ObjectProperty<LocalDate> openedAt;

    @XmlJavaTypeAdapter(LocalDateAdapter.class)
    public final LocalDate getOpenedAt() {
        return openedAt.get();
    }
    
    public final ObjectProperty<LocalDate> openedAtProperty() {
        return this.openedAt;
    }

    public final void setOpenedAt(LocalDate openedAt) {
        this.openedAt.set(openedAt);
    }
}
Run Code Online (Sandbox Code Playgroud)

在另一个 CellFactory 中我设置了新值: i.setOpenedAt(LocalDate.now());

这是可行的,但不想要:

openedAtColumnEv.setCellValueFactory(cellData -> cellData.getValue().openedAtProperty().asString());
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

openedAtColumnEv.setCellValueFactory(new Callback<CellDataFeatures<ItemEv, String>, ObservableValue<String>>() {
    @Override
    public ObservableValue<String> call(CellDataFeatures<ItemEv, String> i) {
        if (i.getValue().getOpenedAt().equals(LocalDate.MIN)) {
            return new SimpleStringProperty("---");
        }
        return i.getValue().openedAtProperty().asString();
    }
});
Run Code Online (Sandbox Code Playgroud)

和这个:

openedAtColumnEv.setCellValueFactory(cellData -> …
Run Code Online (Sandbox Code Playgroud)

java javafx

0
推荐指数
1
解决办法
133
查看次数

标签 统计

java ×1

javafx ×1