JavaFX プロジェクトに問題があります。わからない瞬間があります。私が理解している限り、次のコードは、TableView のインスタンスであるtableのすべてのスクロール イベントを処理できるはずです。
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()
正しい行数を示します。テーブルを下にスクロールすると、不適切な行が強調表示されます。私は少し迷っています。
問題は、テーブルのスクロール イベントを正しく処理するにはどうすればよいかということです。表示されるだけでなく、テーブルのすべての行を処理する必要があります。