值是牵强当TableView中显示它。当你在检索时修改你的值时,你只是这样做而你只是计算提取。
假设你有一个TableView中有10个可见行,然后在列表20个条目。当您向下滚动时,将为新出现在可见区域中的行获取该值。
如果你试试这个:
public class SO extends Application {
public static class Item {
final int v;
Item(int v) { this.v = v; }
public int getV() {
System.out.println(v);
return v;
}
}
@Override
public void start(Stage primaryStage) throws Exception {
StackPane pane = new StackPane();
Scene scene = new Scene(pane, 300, 100);
primaryStage.setScene(scene);
ObservableList<Item> list = FXCollections.observableArrayList();
for (int i=0; i<20; i++) {
Item item = new Item(i);
list.add(item);
}
TableView<Item> tv = new TableView<>(list);
TableColumn<Item, String> col = new TableColumn<>("Column");
col.setCellValueFactory(new PropertyValueFactory<Item,String>("v"));
tv.getColumns().add(col);
pane.getChildren().add(tv);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当滚动的TableView到年底,将打印在控制台越来越多。当向后滚动时,它会显示递减的数字,因为它会显示列表开头的值。输出部分:
5
6
7
8
9
9
2
2
1
1
0