如果我在表格中添加更多项目,直到它生成滚动条。这时,当我滚动滚动条时,名字不等于" Jacob"呈黄色。 enter image description here
table.setRowFactory(row -> new TableRow<Person>() {
@Override
public void updateItem(Person item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
} else {
if (item.getFirstName().equals("Jacob")) {
setStyle("-fx-background-color: yellow");
}
}
}
});
答案 0 :(得分:1)
滚动时,会重复使用这些行来表示显示的新项目。您的行工厂从不一旦设置就删除了一个样式,因此任何黄色的行都保持黄色,无论它们被重用哪个项目。
换句话说,一旦特定行显示名为“Jacob”的人,该行将变为黄色,然后该样式将永远不会改变(它将始终保持黄色),即使该行被重复使用以显示另一个人。
如果该行不应为黄色,则需要重置样式:
table.setRowFactory(row -> new TableRow<Person>() {
@Override
public void updateItem(Person item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setStyle("");
} else {
if (item.getFirstName().equals("Jacob")) {
setStyle("-fx-background-color: yellow");
} else {
setStyle("");
}
}
}
});