值是牽強當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