当前位置: 首页 > 知识库问答 >
问题:

VBOX在放入BorderPane时被推离现场

姚棋
2023-03-14

我有3个HBox设置在一个vbox中,它完全居中显示,直到我试图将vbox放入borderPane。我试图让一个菜单横跨场景的顶部,让我的其余标签和文本字段在中心,除了我的vbox被推到右上角,当它被放入边框窗格。这是我的代码,先谢谢你了。

 //COURSE TITLE PANE
    HBox courseTitlePane = new HBox(30);
    courseTitlePane.getChildren().addAll(courseTitleLabel,courseTitleField);
    courseTitlePane.setAlignment(Pos.CENTER);
    //
    //COURSE NUMBER PANE
    HBox courseNumberPane = new HBox(30);
    courseNumberPane.getChildren().addAll(courseNumberLabel,courseNumberField);
    courseNumberPane.setAlignment(Pos.CENTER);
    //
    //COURSE CREDITS PANE
    HBox creditsPane = new HBox(30);
    creditsPane.getChildren().addAll(numOfCreditsLabel,numOfCreditsField);
    creditsPane.setAlignment(Pos.CENTER);
    //
    //COURSE DESCRIPTION PANE
    HBox descriptionPane = new HBox(30);
    descriptionPane.getChildren().addAll(courseDescriptionLabel,courseDescriptionField);
    descriptionPane.setAlignment(Pos.CENTER);
    //

    VBox pane = new VBox(30);
    pane.getChildren().addAll(courseTitlePane,courseNumberPane,creditsPane,descriptionPane);
    pane.setAlignment(Pos.CENTER);

    BorderPane root = new BorderPane();
    root.getChildren().addAll(pane);
    root.setTop(menuBar);

    Scene scene = new Scene(root,800,500);
    primaryStage.setScene(scene);
    primaryStage.show();

共有1个答案

龚睿
2023-03-14

@James_D评论确实是正确的。如果你看一下BorderPane留档,它描述了BorderPane“在顶部、左侧、右侧、底部和中心位置排列孩子”

因此,就像您将 menuBar 设置为使用 root.setTop(menuBar) 添加到 BorderPane 的顶部一样,要设置 BorderPane 的中心内容,您必须使用 root.setCenter(pane);

这是一个完整的例子:

package sample;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        HBox courseTitlePane = new HBox(30);
        Label courseTitleLabel = new Label("Course Title");
        TextField courseTitleField = new TextField();
        courseTitlePane.getChildren().addAll(courseTitleLabel,courseTitleField);
        courseTitlePane.setAlignment(Pos.CENTER);
        //
        //COURSE NUMBER PANE
        HBox courseNumberPane = new HBox(30);
        Label courseNumberLabel = new Label("Course Number");
        TextField courseNumberField = new TextField();
        courseNumberPane.getChildren().addAll(courseNumberLabel,courseNumberField);
        courseNumberPane.setAlignment(Pos.CENTER);
        //
        //COURSE CREDITS PANE
        HBox creditsPane = new HBox(30);
        Label numOfCreditsLabel = new Label("Credits");
        TextField numOfCreditsField = new TextField();
        creditsPane.getChildren().addAll(numOfCreditsLabel,numOfCreditsField);
        creditsPane.setAlignment(Pos.CENTER);
        //
        //COURSE DESCRIPTION PANE
        HBox descriptionPane = new HBox(30);
        Label courseDescriptionLabel = new Label("Course Description");
        TextField courseDescriptionField = new TextField();
        descriptionPane.getChildren().addAll(courseDescriptionLabel, courseDescriptionField);
        descriptionPane.setAlignment(Pos.CENTER);
        //

        VBox pane = new VBox(30);
        pane.getChildren().addAll(courseTitlePane,courseNumberPane,creditsPane,descriptionPane);
        pane.setAlignment(Pos.CENTER);

        final Menu menu1 = new Menu("File");
        final Menu menu2 = new Menu("Options");
        final Menu menu3 = new Menu("Help");

        BorderPane root = new BorderPane();
        MenuBar menuBar = new MenuBar();
        root.setTop(menuBar);
        menuBar.getMenus().addAll(menu1, menu2, menu3);
        root.setCenter(pane);
        primaryStage.setTitle("Some Generic Course Application");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}
 类似资料:
  • 首先,我是Java的初学者。我正在尝试使用JavaFX在Java中创建一个Monopoly游戏。我在网格窗格中画了板。 我要问你们的问题是,如何将网格放在边界窗格的中心。网格窗格占据整个屏幕。我希望它在边框窗格的中心,并将其他空间用于菜单和其他窗格。 网格 边界板

  • 我在将带有3个按钮的VBox放在BorderPane右侧部分的中心时遇到问题。有没有办法在FXML或CSS中实现这一点? 更新: 这是FXML中的代码 这是CSS文件 以及应用程序的屏幕截图。我希望Vbox位于BorderPate右侧部分的中心。非常感谢您的回复!

  • 我正在尝试了解SQL Server中的隔离/锁定。 我在读提交隔离级别(默认)中有以下场景 我们有一张桌子。 现在从msdn我明白了 当激发select时,将使用共享锁,因此其他事务无法修改数据(避免脏读)..文档还谈到了行级、页级、表级锁。我想跟着场景走 我想了解的是将获取共享锁的持续时间以及哪个(行、页、表)。 将仅在运行 时获取锁定,或者会获取整整 5 分钟,直到我们到达 COMMIT。

  • 所以,我一直试图将一个边框放在另一个边框(中心部分)中,但到目前为止没有成功。 我尝试过(在从FXML加载的窗格和父场景中): 使用并设置顶部、底部、左侧和右侧锚 在主边框的顶部和左侧添加(无效且在调整舞台大小时不起作用) 当前布局: 我正在寻找的结果(大致) 这个想法是,即使当我调整窗口大小时,FXML布局也将留在MainBorderPane的中心; LoginController.java l

  • 如果我们使用BorderPane,则节点将排列在Top,Left,Right,Bottom和Center位置。 包javafx.scene.layout名为BorderPane的类表示BorderPane。 该类包含五个属性,包括 - bottom - 此属性属于Node类型,它表示放置在BorderPane底部的节点。 您可以使用setter方法setBottom()为此属性设置值。 cente

  • 我有以下代码: 假设线程1调用synchornizer.await()并通过 和块在 然后,另一个线程2调用synchronizer.signalAll()以向线程1发送信号。我的问题是线程2如何通过调用 打电话之前 锁最初是由线程 1 获取的? 我在这里发现了同样的问题: 等待可重入锁中的条件 答案是: “锁定”和“已同步”都暂时允许其他人在等待时获取锁定。要停止等待,线程必须重新获取锁。 我试