在GridPane(JavaFX)

时间:2016-10-03 05:53:19

标签: java javafx fxml centering

我有一个简单的显示,顶部有一个标题,中间有一个列表,底部有三个按钮。我希望顶部的标题和底部的按钮水平居中。

以下是我一直在尝试使用的代码:

<?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

我尝试过为我的GridPane使用alignment="CENTER"等各种事情,但似乎没有任何效果。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您需要将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属性。

答案 1 :(得分:1)

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

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

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

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