我仍然对JavaFX很新,并且不太了解工厂是如何工作的。
我要做的是将样式应用于tableColumn中的tableCell,具体取决于String的值,并使单元格可编辑。
现在我的代码看起来像这样:
notesColumn.setCellFactory(column -> new TableCell<Computer, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null | empty)
{
setText(null);
setStyle("");
}
else
{
setText(item);
if (item.contains("Restoring @")) setTextFill(Color.CRIMSON);
else if (item.contains("Ready")) setTextFill(Color.FORESTGREEN);
else setTextFill(Color.BLACK);
}
}
});
这部分按照我的意愿工作,但如果我尝试使用下面的代码使单元格可编辑,那么当然,cellFactories会相互覆盖。我如何将两者合并?
notesColumn.setCellFactory(TextFieldTableCell.forTableColumn());
答案 0 :(得分:0)
以下内容应该有效:
notesColumn.setCellFactory(column -> new TextFieldTableCell<Computer, String>(new DefaultStringConverter()) {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null | empty)
{
setStyle("");
}
else
{
if (item.contains("Restoring @")) setTextFill(Color.CRIMSON);
else if (item.contains("Ready")) setTextFill(Color.FORESTGREEN);
else setTextFill(Color.BLACK);
}
}
});