我看过其他问题,但是他们不满足我的问题
我希望特定的单元格在树状视图中显示红色,并且使用
public void updateView()
{
treeView.setCellFactory(tv -> new TreeCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
}
else {
for(ArrayList<TreeItem> x :Signals)
{
for(TreeItem z: x)
{
if(z.getValue().equals(item))
{
setText(item);
setStyle("-fx-text-fill: red");
}
else{ setText(item);}
}
}
}
}
});
}
我尝试格式化它,对我来说不起作用。 发生的事情是弄乱了我的treeView表。查看图片:https://imgur.com/a/8tf76xn
有什么想法吗?
答案 0 :(得分:0)
请注意,单元已重用;如果为单元格分配了未标记的项目/单元格为空,则需要从单元格中删除样式和/或文本。此外,文本只需要分配一次:
treeView.setCellFactory(tv -> new TreeCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setStyle(null);
if (empty || item == null) {
setText("");
} else {
setText(item);
// apply style, if a TreeItem containing the same value as the item is found in Signals
outer: for(List<TreeItem> x : Signals) {
for(TreeItem z: x) {
if(z.getValue().equals(item)) {
setStyle("-fx-text-fill: red");
break outer;
}
}
}
}
}
});