JavaFX在一个场景中有多个窗格?

JavaFX在一个场景中有多个窗格?,java,user-interface,javafx,pane,Java,User Interface,Javafx,Pane,我正在尝试制作一个应用程序,它将在顶部有一个日期(总是自动居中),在底部有一个内容,它不会与任何方向对齐 我认为最好的方法是: Pane normalLayout = new Pane(); StackPane centeredLayout = new Stackpane(); Label centeredText = new Label("I want this text centered!"); Button unorganizedButton = new Button("Press me"

我正在尝试制作一个应用程序,它将在顶部有一个日期(总是自动居中),在底部有一个内容,它不会与任何方向对齐

我认为最好的方法是:

Pane normalLayout = new Pane();
StackPane centeredLayout = new Stackpane();
Label centeredText = new Label("I want this text centered!");
Button unorganizedButton = new Button("Press me");
centeredLayout.getChildren().add(centeredText);
normalLayout.getChildren().add(unorganizedButton);
但我不能这样做:

Scene myScene = new Scene(centeredLayout, normalLayout, 500, 500);
Window myWindow = new Window();
myWindow.setScene(myScene);
myWindow.show();

那么如何做到这一点呢?如何在同一场景中存在多个窗格?

我建议您创建一个“根”窗格。 在您的情况下,可以使用边框窗格

例如:

BorderPane root = new BorderPane();

Label centeredText = new Label("I want this text centered!");
Button unorganizedButton = new Button("Press me");

BorderPane.setAlignment(centeredText, Pos.CENTER);

root.setTop(centeredText);
root.setBottom(unorganizedButton);
然后用新创建的窗格调用构造函数

Scene scene = new Scene(root, 500, 500);
补充:

你也可以设置新的窗格

AnchorPane anchorPane = new AnchorPane();
root.setTop(anchorPane);

场景本身只能有一个根窗格。 因此,如果场景中需要2个窗格,则需要3个

Scene  
  |   
  V
Root Pane (Vbox for example)
  |                   |
  V                   V
Pane1                Pane2
在您的代码中,可以如下所示:

StackPane rootPane = new StackPane();
Scene scene = new Scene(rootPane,...);
Pane pane1 = new Pane();
Pane pane2 = new Pane();
rootPane.getChildren().addAll(pane1,pane2);
根据应用程序的布局方式,您必须选择正确的窗格实现

作为熟悉所有布局容器的小提示,请尝试SceneBuilder应用程序

也许此链接将帮助您了解布局在JavaFX中的工作原理:

Scene myScene=新场景(新的VBox(centeredLayout,normalLayout),500500)?@UlukBiy那么一个场景一次只能有一个窗格,但该窗格内部可以有多个窗格?正在执行:
new VBox(centeredLayout,normalLayout)
与执行
VBox myLayout=new VBox()相同;myLayout.getChildren().add(centeredLayout,normalLayout)?感谢您提供此信息。我有一个问题。在SceneBuilder中,如何查看为应用程序生成的代码?我想制作一些东西,然后阅读代码,看看它是如何完成的。SceneBuilder不生成Java代码。它生成FXML文件。请看这里:通过fxml,您可以创建“xml”格式的场景图。伙计,这太糟糕了,因为如果能从中更好地学习,那就太好了。然而,我确实看到了它如何使理解构建计划变得更容易。假设我从一个BorderPane开始,我想要一个顶部有菜单项的菜单栏,但就在它的正下方,仍然在BorderPane的顶部,我想要在它旁边添加一个按钮和文本。我该如何规定我希望菜单栏位于我的按钮上方,因为在按钮旁边有一个菜单栏是没有意义的,等等。看一下主播,它是最简单的布局容器。在这里,您可以说菜单栏的上/左/右锚点为0.0。您的按钮和文本我将包装到Vbox/Hbox中,Vbox会得到菜单栏高度的顶部锚定。@HateFind如果答案解决了您的问题,那么接受它是一种很好的做法。它可以帮助有类似问题并正在寻找解决方案的未来用户。