2016-10-03 26 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