2013-03-26 34 views
0

時爲什麼一個JavaFX的多次調用get方法使用setCellValueFactory

tableColumn.setCellValueFactory(new PropertyValueFactory<Object1, Integer>("Number")); 

方法調用getNumber方法多次,當我只添加一行到的tableView?

數目字段是在被在object1使用對象2。所以這裏Object1提供了一個getNumber方法,它獲取一個存儲在object2中的數組列表中的數字。

這裏是我的getNumber方法:

public double getNumber() { 
    setNumber++; 
    return sets.get(setNumber).getNumber(); 
} 

回答

0

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