有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

网格窗格中的java居中按钮和文本(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

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


共 (2) 个答案

  1. # 1 楼答案

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

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

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

    要通过FXML管理它,您必须设置某个属性。我记不起我的头顶了,但我想它在你的GridPane节点中

  2. # 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属性