如何将滚动窗格添加到选项卡中

时间:2013-06-08 12:59:24

标签: javafx-2 javafx javafx-8

我有一个简单的JavaFX标签示例

primaryStage.setTitle("Tabs Test");
        Group root = new Group();
        Scene scene = new Scene(root, 600, 500, Color.WHITE);

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

        //Create Tabs
        Tab tabA = new Tab();
        tabA.setText("Main Component");
        //Add something in Tab
        StackPane tabA_stack = new StackPane();
        tabA_stack.setAlignment(Pos.CENTER);
        tabA_stack.getChildren().add(new Label("Label@Tab B")); 
        tabA.setContent(tabA_stack);
        tabPane.getTabs().add(tabA);

        Tab tabB = new Tab();
        tabB.setText("Second Component");
        //Add something in Tab
        StackPane tabB_stack = new StackPane();
        tabB_stack.setAlignment(Pos.CENTER);
        tabB_stack.getChildren().add(new Label("Label@Tab B"));
        tabB.setContent(tabB_stack);
        tabPane.getTabs().add(tabB);

        Tab tabC = new Tab();
        tabC.setText("Last Component");
        //Add something in Tab
        StackPane tabC_vBox = new StackPane();
        tabC_vBox.setAlignment(Pos.CENTER);
        tabC_vBox.getChildren().add(new Label("Label@Tab C"));
        tabC.setContent(tabC_vBox);
        tabPane.getTabs().add(tabC);

        mainPane.setCenter(tabPane);

        mainPane.prefHeightProperty().bind(scene.heightProperty());
        mainPane.prefWidthProperty().bind(scene.widthProperty());

        root.getChildren().add(mainPane);
        primaryStage.setScene(scene);
        primaryStage.show();

如何将水平和垂直滚动窗格添加到标签的正文中。我想只在数据大于可见区域时才显示滚动窗格。这可能吗?

2 个答案:

答案 0 :(得分:2)

不要将标签的内容设置为StackPane,而是使用setContent对象调用ScrollPane方法,并将此ScrollPane的内容设置为相应的StackPane

答案 1 :(得分:1)

创建基本javafx.scene.control.ScrollPane很简单,可以在JavaDoc中找到一个示例。以下是将ScrollPane放入您的第一个Tab

的代码
        ...
        final Rectangle rect = new Rectangle(200, 200, 800, 600);
        rect.setFill(Color.RED);
        final ScrollPane scrollPane = new ScrollPane();
        scrollPane.setContent(rect);
        tabA.setContent(scrollPane);
        tabPane.getTabs().add(tabA);
        ...

您也可以在JavaFX tutorials中找到很多有用的示例。