【发布时间】:2015-09-02 13:54:01
【问题描述】:
我有以下代码来更新列单元格及其对应行的颜色:
calltypel.setCellFactory(column -> {
return new TableCell<CallLogs, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? "" : getItem().toString());
setGraphic(null);
TableRow currentRow = getTableRow();
//This doesn't work
if(item.equals("a")){
item.setTextFill(Color.RED);
currentRow.setTextFill(Color.PINK);
}
else{
item.setTextFill(Color.GREEN);
currentRow.setTextFill(Color.BLUE);
}
}
};
});
'if' 条件的代码段不起作用。我无法识别对对象的正确引用,以及执行此操作的最佳方法。
谢谢!
【问题讨论】:
-
item 是 String 所以你不能做 item.setTextFill()。而是调用 this.setTextFill()。如果一个单元格是“a”而另一个不是,会发生什么情况,行的颜色是什么?
-
在这两种情况下,颜色是不同的。但是行着色不起作用。事实上,
item.equals不起作用。 -
我试过
if (!isEmpty()) { this.setTextFill(Color.GREEN); if(item.equals("missed call")) this.setTextFill(Color.RED);}并且这行得通,但这不是我希望写if子句的方式。另外,如何设置整行的文字颜色?