将顶部菜单添加到以 JavaFX 为中心的网格窗格
Add a top menu to JavaFX centered Grid Pane
我是 JavaFX 的新手。无论 window 的大小如何调整,我都使用网格窗格使我的项目在页面上居中。我想添加一个沿着顶部运行的菜单。我很快发现 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 提供的文档,但没有在任何地方找到此功能。
检查这是否是您想要的:
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
//Create your menu
final Menu menu1 = new Menu("File");
final Menu menu2 = new Menu("Options");
final Menu menu3 = new Menu("Help");
MenuBar menuBar = new MenuBar();
menuBar.getMenus().addAll(menu1, menu2, menu3);
//Your GridPane
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);
//Add them to root (BorderPane)
root.setTop(menuBar);
root.setCenter(grid);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
我是 JavaFX 的新手。无论 window 的大小如何调整,我都使用网格窗格使我的项目在页面上居中。我想添加一个沿着顶部运行的菜单。我很快发现 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 提供的文档,但没有在任何地方找到此功能。
检查这是否是您想要的:
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
//Create your menu
final Menu menu1 = new Menu("File");
final Menu menu2 = new Menu("Options");
final Menu menu3 = new Menu("Help");
MenuBar menuBar = new MenuBar();
menuBar.getMenus().addAll(menu1, menu2, menu3);
//Your GridPane
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);
//Add them to root (BorderPane)
root.setTop(menuBar);
root.setCenter(grid);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}