2016-10-03 28 views
0

我有一个简单的显示,其顶部有一个标题,中间有一个列表,最下面有三个按钮。我想要顶部的标题和底部的按钮水平居中。将按钮和文本置于GridPane中(JavaFX)

这里是我一直在尝试使用代码:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.control.ListView?> 
<?import javafx.scene.layout.GridPane?> 

<GridPane 
    xmlns="http://javafx.com/javafx/8.0.40" 
    xmlns:fx="http://javafx.com/fxml/1" 
    fx:controller="controllers.SongLibraryController" 
> 
    <Label 
     text="Todo List" 
     GridPane.columnSpan="3" 
     GridPane.rowIndex="0" 
     GridPane.halignment="CENTER" 
    /> 
    <ListView 
     prefWidth="300" 
     prefHeight="400" 
     fx:id="listView" 
     GridPane.columnSpan="3" 
     GridPane.rowIndex="1" 
    /> 
    <Button 
     fx:id="editItem" 
     GridPane.halignment="CENTER" 
     GridPane.columnIndex="0" 
     GridPane.rowIndex="2" 
     text="Edit Item" 
    /> 
    <Button 
     fx:id="addItem" 
     GridPane.halignment="CENTER" 
     GridPane.columnIndex="1" 
     GridPane.rowIndex="2" 
     text="Add Item" 
    /> 
    <Button 
     fx:id="deleteItem" 
     GridPane.halignment="CENTER" 
     GridPane.columnIndex="2" 
     GridPane.rowIndex="2" 
     text="Delete Item" 
    /> 
</GridPane> 

这里是电流输出:

enter image description here

我试着做各种事情就像使用alignment="CENTER"为我的GridPane,但似乎没有任何工作。任何帮助,将不胜感激!

回答

1

您需要为GridPane设置对齐方式为alignment="center",并且所有元素都将居中对齐。

更新 您可以像这样对齐中心的按钮。

<HBox GridPane.rowIndex="2" GridPane.columnSpan="3" alignment="CENTER" spacing="25"> 
    <Button text="b1"/> 
    <Button text="b2"/> 
    <Button text="b3"/> 
</HBox> 

此更新后,您还可以删除每个节点的columnSpan属性。

+0

我实际上已经尝试过'alignment =“CENTER”',并且我在示例中更新了我的代码以显示该代码。它对生成的输出没有任何影响。 – saadq

+0

@meh_programmer,查看我的回答 – GVArt

+0

啊,我明白了。非常感谢! – saadq

1

要以编程方式对齐网格窗格中的元素,您必须从GridPane类调用静态方法。

要设置水平对齐,请致电GridPane.setHalignment(Node n, HPos p)。要设置垂直对齐,请致电GridPane.setValignment(Node n, VPos p)

您可以阅读Oracle自己的版式指南here。如果向下滚动,直到看到饼图,它们将显示如何管理网格窗格中布局的示例。

要通过FXML进行管理,您必须设置某个属性。我不记得我的头顶,但我认为它是您的GridPane节点中的alignment="center"

+0

它看起来像是将'GridPane.halignment =“CENTER”'设置为'Label'居中,谢谢!但是,它似乎不适用于按钮。我更新了我的截图。我能做些什么让三个按钮水平居中?另外作为一个附注,由于某些原因,在我的'GridPane'上设置'alignment =“CENTER”'不起作用。无论如何,因为它有一点帮助,所以提高你的答案! – saadq

+0

我想你可以将整个GridPane对齐居中,通过加入' alignment =“CENTER”',就像GVArt建议的一样。 – Gikkman