JavaFXGridPane对象对齐
我试图使用JavaFX创建一个场景,其中程序标题位于顶部中心,按钮位于场景左侧的垂直线上。但是,这两个元素都聚集显示在场景的右上角,而不是我希望它们位于的位置 如何使这些元素显示在我希望它们显示的位置 下面是我如何设置节目标题的位置:JavaFXGridPane对象对齐,java,user-interface,javafx,graphics,gridpane,Java,User Interface,Javafx,Graphics,Gridpane,我试图使用JavaFX创建一个场景,其中程序标题位于顶部中心,按钮位于场景左侧的垂直线上。但是,这两个元素都聚集显示在场景的右上角,而不是我希望它们位于的位置 如何使这些元素显示在我希望它们显示的位置 下面是我如何设置节目标题的位置: grid.add(gameTitle, 0, 0); GridPane.setHalignment(gameTitle, HPos.CENTER); GridPane.setValignment(gameTitle, VPos.TOP); 我尝试以类
grid.add(gameTitle, 0, 0);
GridPane.setHalignment(gameTitle, HPos.CENTER);
GridPane.setValignment(gameTitle, VPos.TOP);
我尝试以类似方式设置VBox对象:
grid.getChildren().add(buttonBox);
GridPane.setHalignment(buttonBox, HPos.LEFT);
GridPane.setValignment(buttonBox, VPos.CENTER);
这是显示的内容:
我的整个主菜单课。(在我的主类中调用该类来构建场景):
我的主类(显示场景):
正如我所注意到的,您在一个列中添加了所有节点并在其中设置了位置,但没有指定该列需要拉伸的程度。除非指定,否则GridPane列不会自动拉伸 通过将GridPane的gridLinesVisible属性启用为true,可以调试程序
grid.setGridLinesVisible(true);
您需要指定columnConstraints,以使GridPane列拉伸到可用宽度
ColumnConstraints constraint = new ColumnConstraints();
constraint.setHgrow(Priority.ALWAYS);
grid.getColumnConstraints().add(constraint);
正如我所注意到的,您在一个列中添加了所有节点并在其中设置了位置,但没有指定该列需要拉伸的程度。除非指定,否则GridPane列不会自动拉伸 通过将GridPane的gridLinesVisible属性启用为true,可以调试程序
grid.setGridLinesVisible(true);
您需要指定columnConstraints,以使GridPane列拉伸到可用宽度
ColumnConstraints constraint = new ColumnConstraints();
constraint.setHgrow(Priority.ALWAYS);
grid.getColumnConstraints().add(constraint);
将
网格窗格的子项添加到的默认单元格是(0,0)
,这是您在此行中执行的操作:
grid.getChildren().add(buttonBox);
您需要将此更改为
grid.add(buttonBox, 0, 1);
将行索引设置为1。(以这种方式分配行索引有多种选择,但在这种情况下,这是最方便的选择。)
但这不会导致第一列占据GridPane
的全部宽度。如果还希望第一列具有所有可用宽度,则需要通过添加以下内容来指定:
将网格窗格的子项添加到的默认单元格是(0,0)
,这是您在此行中执行的操作:
grid.getChildren().add(buttonBox);
您需要将此更改为
grid.add(buttonBox, 0, 1);
将行索引设置为1。(以这种方式分配行索引有多种选择,但在这种情况下,这是最方便的选择。)
但这不会导致第一列占据GridPane
的全部宽度。如果还希望第一列具有所有可用宽度,则需要通过添加以下内容来指定: