我正在以下列的所有行中创建一个 TableCellTextField:
nameColumn.setCellFactory(TextFieldTableCell.forTableColumn());
我的目的是根据用户的输入更改已编辑单元格的背景颜色。
我找到了几种更改单个单元格背景颜色的解决方案,其中包括覆盖单元格工厂内的 updateItem() 方法。 Here就是一个例子。
但是,我不知道如何将该策略与通过 TextField 使单元格可编辑相结合。
最佳答案
您基本上可以使用 TextFieldTableCell
执行与使用常规 TableCell
相同的操作。请注意,与普通的 TableCell
不同,TextFieldTableCell
已经负责设置文本等。
所以你可以这样做,例如:
PseudoClass specialClass = PseudoClass.getPseudoClass("special");
nameColumn.setCellFactory(tc -> new TextFieldTableCell<MyType, String>(TextFormatter.IDENTITY_STRING_CONVERTER) {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
boolean condition = /* depends on item and empty.... */
pseudoClassStateChanged(specialClass, condition);
}
});
然后在 CSS 文件中,只需定义单元格所需的样式即可。例如
.table-cell:special {
-fx-background-color: yellow ;
}
关于java - JavaFX 中的 TableView : how to change a single cell's background color if a TableCellTextField is being used?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370600/