【问题标题】:How to set tabs position in JavaFX如何在 JavaFX 中设置制表符位置
【发布时间】:2013-06-04 18:02:51
【问题描述】:

我有这个带有标签的 JavaFX 代码。你能告诉我如何将标签面板的位置设置为始终位于主舞台的左侧:

VBox stackedTitledPanes = createStackedTitledPanes();

        ScrollPane scroll = makeScrollable(stackedTitledPanes);

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

        tabPane.setStyle("-fx-font-size: 12pt;"); // Set global size for the font
        // Create Tabs
        Tab tabA = new Tab();
        tabA.setText("Main Component");
        tabA.setStyle("-fx-font-size: 12pt;"); // Set size of the tab name
        // Add something in Tab
        StackPane tabA_stack = new StackPane();
        tabA_stack.setAlignment(Pos.CENTER);
        tabA_stack.getChildren().add(scroll); 
        tabA.setContent(tabA_stack);
        tabPane.getTabs().add(tabA);

        Tab tabB = new Tab();
        tabB.setText("Second Component");
        tabB.setStyle("-fx-font-size: 12pt;"); // Set size of the tab name
        // 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");
        tabC.setStyle("-fx-font-size: 12pt;"); // Set size of the tab name
        // 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.setPrefSize(395, 580);
        mainPane.setLayoutX(850);
        mainPane.setLayoutY(32);

        scroll.setPrefSize(395, 580);
        scroll.setLayoutX(850);
        scroll.setLayoutY(32);

        root.getChildren().add(mainPane);

【问题讨论】:

    标签: javafx-2 javafx javafx-8


    【解决方案1】:

    更新

    听起来您想将 stackedTitledPaneVBox 更改为 BorderPane。 所以这段代码:

    VBox stackedTitledPanes = new VBox();
    

    变成:

    BorderPane stackedTitledPanes = new BorderPane();
    

    然后,当您要添加节点时,请指定要放置它们的部分(我在中心窗格中放置了一个标签作为填充物):

    stackedTitledPanes.setLeft(mainPane);
    stackedTitledPanes.setCenter(new Label("Main Content"));
    

    旧答案

    这会将选项卡放在左侧(我假设这就是您要查找的内容):

        tabPane.setSide(Side.LEFT);
    

    【讨论】:

    • 我还有其他的,但无论如何感谢您提供的宝贵示例。我的想法是将选项卡面板(包含所有组件)始终放在主舞台的左侧,因为当我调整主舞台的大小时,位置将保持不变。然后我想调整主舞台的大小,以便在左侧看到标签面板。
    • 啊,我明白你的意思了 - 我已经更新了我的答案以更好地反映你的需求。
    • 是的,这行得通。我还测试了将选项卡面板放在主页的右侧,但它不起作用。为了将标签面板放置在主舞台的右侧,我还需要更改其他内容吗?
    • 是的,您应该可以使用stackedTitledPanes.setRight(mainPane); 将标签放在右侧。您可能需要扩大屏幕才能看到内容(mainPane 的大小为 395x580,场景大小为 300x250)
    • 有没有其他方法可以使用setLayoutX()将组件放置在主舞台的右侧?
    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    相关资源
    最近更新 更多