gpt4 book ai didi

java - TableView/CellValueFactory - 根据另一个属性的值更改显示的属性

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

我有一个填充了自定义对象的TableView;该表显示该对象的属性。

我的问题是如何根据该行的另一个属性的值将不同的属性绑定(bind)到该列?

例如,假设我有这个对象:

public class MyObject() {
private SimpleStringProperty name = new SimpleStringProperty("");
private SimpleStringProperty type = new SimpleStringProperty("");
}

现在在 TableView 中,我有两列:

+---------+--------+
| NAME | TYPE |
+---------+--------+
| Robert | Mgr |
+---------+--------+

但是,如果 type = "Something",我希望 Type 列实际显示 name 属性的值:

+---------+--------+
| NAME | TYPE |
+---------+--------+
| Robert | Robert |
+---------+--------+

我不清楚如何根据同一对象实例中另一个属性的值设置不同的 PropertyValueFactory

最佳答案

你应该能够做这样的事情:

编辑以显示列定义 - 这需要将对象视为一个整体,而不是字符串。

@FXML 
private TableColumn<MyObject,MyObject> changingColumn;

...

//Where you initialize the table
changingColumn.setCellValueFactory(cellData -> new ReadOnlyObjectWrapper<>(cellData.getValue()));
changingColumn.setCellFactory(tc -> new TableCell<MyObject, MyObject>() {
@Override
public void updateItem(MyObject item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText("");
} else if ("something".equals(item.getType())){
setText(item.getName());
}else {
setText(item.getType());
}
}
});

关于java - TableView/CellValueFactory - 根据另一个属性的值更改显示的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327735/

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