gpt4 book ai didi

JavaFX 着色 TableCell

转载 作者:搜寻专家 更新时间:2023-11-01 02:40:15 31 4
gpt4 key购买 nike

我需要你的帮助!

我有一个表格,里面有行(姓名等)现在,当位于该行上的对象具有特定值时,我想为特定的 tableCells 背景着色。但我只得到它来读取这个单元格的值。但我需要阅读对象(在我的代码中称为 TableListObject)以了解我需要用哪种颜色为单元格着色。但是此“颜色值”在该行中不可见(没有列)。

这是我的代码:

for(TableColumn tc:tView.getColumns()) {
if(tc.getId().equals("text")) {
tc.setCellValueFactory(newPropertyValueFactory<TableListObject,String>("text"));
// here i need to check the Objects value and coloring that cell
}
}

这是一个 HTML Fiddle 来可视化我的问题: https://jsfiddle.net/02ho4p6e/

最佳答案

为您想要的列调用单元工厂并覆盖 updateItem 方法。您需要检查它是否为空,如果不是,您可以进行对象检查,然后您可以设置单元格背景的颜色或您想要的任何其他样式。希望这会有所帮助。

    tc.setCellFactory(column -> {
return new TableCell<TableListObject, String>() {
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);

if (item == null || empty) {
setText(null);
setStyle("");
} else {
if (item.equals("Something")) {
setStyle("-fx-background-color: blue");
} else {
setStyle("");
}
}
}
};
});

编辑 1:

如果要使用同一行中另一个单元格的值。您将不得不使用行的索引并获取检查所需的项目。

tc.setCellFactory(column - > {
return new TableCell < TableListObject, String > () {
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);

if (item == null || empty) {
setText(null);
setStyle("");
} else {
int rowIndex = getTableRow().getIndex();
String valueInSecondaryCell = getTableView().getItems().get(rowIndex).getMethod();
if (valueInSecondaryCell.equals("Something Else")) {
setStyle("-fx-background-color: yellow"); //Set the style in the first cell based on the value of the second cell
} else {
setStyle("");
}

}
}
};
});

编辑 2:

根据建议改进了答案。这使用引用的对象。

   else {
TableListObject listObject = (TableListObject) getTableRow().getItem();
if (listObject.getMethod().equals("Something Else")) {
setStyle("-fx-background-color: yellow"); //Set the style in the first cell based on the value of the second cell
} else {
setStyle("");
}
}

关于JavaFX 着色 TableCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35056108/

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