我正在尝试创建一个应用程序,其顶部有一个日期(总是自动居中),底部的内容不会与任何方向对齐。
我认为最好的办法是:
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();
那怎么办呢?如何在同一场景中存在多个窗格?
答案 0 :(得分:10)
它自己的场景只能有一个 root 窗格。 因此,如果您想在场景中使用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);
根据应用程序的布局方式,您必须选择正确的Pane实现。
作为一个小技巧,熟悉所有布局容器,请尝试使用SceneBuilder应用程序。 http://gluonhq.com/open-source/scene-builder/
也许这个链接可以帮助您了解JavaFX中布局的工作原理: http://docs.oracle.com/javafx/2/scenegraph/jfxpub-scenegraph.htm https://docs.oracle.com/javafx/2/layout/builtin_layouts.htm
答案 1 :(得分:1)
我建议你创建一个" root" -Pane。 在您的情况下,您可以使用BorderPane。
示例:
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);