2015-06-05 54 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。我认为这不可行;这些单元最终会被添加到两个不同位置的场景图中(这是不允许的)。为每个表创建不同的列。

相关问题