【发布时间】:2019-03-27 04:56:25
【问题描述】:
我对 JavaFX 很陌生。无论窗口大小如何调整,我都使用网格窗格将我的项目保持在页面中心。我想添加一个在顶部运行的菜单。我很快发现 grid.setTop(menuBar) 不是网格窗格的成员函数。有办法吗?
我可以在一个场景中创建两种不同类型的窗格吗? IE,一个让项目居中的 GridPane 和一个让菜单位于顶部的 BorderPane?还是应该使用 CSS 样式将菜单栏置于顶部?
这是我正在使用的一些代码:
public void start(Stage primaryStage) {
try {
primaryStage.setTitle("Bapu Inventory");
BorderPane root = new BorderPane();
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
Text scenetitle = new Text("Welcome");
grid.add(scenetitle, 0, 0, 1, 1);
MenuBar menuBar = new MenuBar();
menuBar.prefWidthProperty().bind(primaryStage.widthProperty());
//This is the line I can't figure out. How do I get this to position at top left?
grid.setTop(menuBar);
任何帮助将不胜感激。我查看了 Oracle 提供的文档,但没有在任何地方找到此功能。
【问题讨论】:
-
我的建议:使用
BorderPane,将您的菜单添加到其top。然后将您的GridPane添加到 BorderPane 的中心。 -
创建 BorderPane 后我有什么特别需要做的吗?当我尝试这样做时,似乎 GridPane 会覆盖我在 BorderPane 中拥有的所有内容。
-
如果您只向
GridPane添加单个元素,最好使用更简单的布局。VBox允许您将两者都添加为子项,并且可以设置为水平对齐Text。VBox.margin可用于替换填充...