我的 JavaFX 项目有问题。有一瞬间我无法理解。据我了解,以下代码应该能够处理table的所有滚动事件,它是 TableView 的一个实例
table.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent scrollEvent) {
System.out.println("Hello!");
int i = 0;
int length = table.getItems().size();
for(Node n: table.lookupAll("TableRow")) {
if (n instanceof TableRow) {
TableRow row = (TableRow) n;
if(table.getItems().get(i).getType() == "fwfx") {
row.setStyle("-fx-background-color: forestgreen;");
}
i++;
}
if(i == length) {
break;
}
}
}
}
);
每当我启动应用程序时,它仅针对可见行正确突出显示行。我发现它是因为
table.lookupAll("TableRow")
为我返回只有 17 个节点的集合。虽然
table.getItems().size()
显示正确的行数。如果我向下滚动表格,我会看到突出显示的不适当的行。我有点迷路了。
所以问题是我如何正确处理我的表格的滚动事件?我需要处理表格的所有行,不仅是可见的。