gpt4 book ai didi

Javafx:从 TableCell 获取属性

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

我想从 TableCell 中的模型获取一个属性,这样我就可以根据该属性来操纵单元格,让我们看一下以下示例:

我有一个像这样的模型:

public class Model {

private CustomProperty<Integer> appleCount;
private CustomProperty<Integer> peachCount;

public Model(Integer appleCount, Integer peachCount) {
this.appleCount = new CustomIntegerProperty(appleCount);
this.peachCount = new CustomIntegerProperty(peachCount);
}

public CustomProperty<Integer> appleCountProperty() {
return appleCount;
}

public CustomProperty<Integer> peachCountProperty() {
return peachCount;
}
}

这个模型只是我的模型的一个模拟,我有一些模型有两个或更多 CustomProperty<Integer>

然后我有几个表有这个 Model或类似的类 TableView 的模型。我有一个自定义TableCell覆盖updateItem我想根据 CustomProperty 的属性设置单元格的文本例如,如果初始值是 0,则将文本设置为空,而不是默认具有单元格的 0。我有一个部分解决方案:创建一个 interface HasCustomProperty然后模型会实现它,但是有一些问题:

  • 我需要向界面添加两个 CustomProperties 或它们的列表
  • 我需要在单元格中以某种方式询问:你是 appleCount 吗?你是 peach 单元格吗?

可以肯定的是,在一个单元格中只有一个属性,苹果或桃子,所以理论上我不应该在单元格中关心如果我知道它们都是 CustomIntegerProperties 所以我知道它们有 initialValueoldValue这样我就可以根据它设置单元格的文本。

我只能获取该项目,它是一种 Integer 类型,所以我没有它的属性,或者有什么方法可以获取该属性本身吗?

解决方案可能是在每个列的 cellFactory 中覆盖 updateItem,例如我知道这是 appleColumn,因此从 appleCountProperty 获取信息,依此类推,但这会导致大量重复代码(如果我必须这样做)做5-6个地方。所以我想我制作一个自定义 TableCell 并在那里管理文本,然后我只需为每个列设置该单元格 cellFactory()

您有什么想法如何在没有重复代码的情况下做到简单吗?

最佳答案

根据我们的讨论 - 我认为您面临的问题是确定 IntegerProperty 的用户集 0 和初始化 0 之间的差异。

您应该在模型中使用以下内容,而不是使用使用 int 且不能为 null 的 IntegerProperty:

private ObjectProperty<Integer> appleCountProperty = new SimpleObjectProperty<>();

然后在你的表中你只需绑定(bind)它:

@FXML
TableColumn<Model, Integer> appleCountColumn;

//在你的初始化中

appleCountColumn.setCellValueFactory(data -> data.getValue().appleCountProperty ());

这应该可以满足您的需要。

关于Javafx:从 TableCell 获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347304/

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