2015-06-05 55 views
1

我有一個選項卡式窗格,每個選項卡上都有一個表格。我向表中添加不同的項目,我只是希望每個選項卡都顯示該表格的相應項目。但沒有出現。 當我調試時,我可以清楚地看到包含選項卡的選項卡窗格,其中包含表視圖,其中包含正確的項目。JavaFX選項卡式窗格在每個選項卡上都有一個表格視圖?

爲什麼這不起作用?

謝謝!

primaryStage.setTitle("TEST"); 
    Group root = new Group(); 
    Scene scene = new Scene(root, 400, 300, Color.WHITE); 

    TableView tv1 = new TableView(); 
    TableView tv2 = new TableView(); 

    TableColumn<String, String> clmn = new TableColumn<>("Test"); 
    clmn.setPrefWidth(230); 

    tv1.getColumns().addAll(clmn); 
    tv2.getColumns().addAll(clmn); 

    List<String> firstItems = new ArrayList<>(); 
    firstItems.add("ONE"); 
    firstItems.add("TWO"); 
    firstItems.add("THREE"); 
    tv1.setItems(FXCollections.observableArrayList(firstItems)); 

    List<String> secondItems = new ArrayList<>(); 
    secondItems.add("1"); 
    secondItems.add("2"); 
    secondItems.add("3"); 
    tv2.setItems(FXCollections.observableArrayList(secondItems)); 

    TabPane tabPane = new TabPane(); 
    BorderPane mainPane = new BorderPane(); 

    //Create Tabs 
    Tab tabA = new Tab(); 
    tabA.setText("Tab A"); 
    tabA.setContent(tv1); 
    tabPane.getTabs().add(tabA); 

    Tab tabB = new Tab(); 
    tabB.setText("Tab B"); 
    tabB.setContent(tv2); 
    tabPane.getTabs().add(tabB); 

    mainPane.setCenter(tabPane); 
    mainPane.prefHeightProperty().bind(scene.heightProperty()); 
    mainPane.prefWidthProperty().bind(scene.widthProperty()); 
    root.getChildren().add(mainPane); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

空:

enter image description here

回答

2

有兩個問題與您的代碼(即我立刻看到):

您需要設置單元格值工廠在TableView的每一列。沒有這個,該列沒有任何數據要顯示。所以你需要類似

clmn.setCellValueFactory(cellData -> new ReadOnlyStringWrapper(cellData.getValue())); 

其次,你對這兩個表使用相同的TableColumn。我認爲這不可行;這些單元最終會被添加到兩個不同位置的場景圖中(這是不允許的)。爲每個表創建不同的列。

相關問題