GridPane 中的居中按钮和文本 (JavaFX)
Centering buttons and text in a 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>
这是当前输出:
我已经尝试做各种事情,例如对我的 GridPane 使用 alignment="CENTER"
,但似乎没有任何效果。如有任何帮助,我们将不胜感激!
您需要将 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 属性。
要以编程方式对齐网格窗格内的元素,您必须从 GridPane 调用静态方法 class。
要设置水平对齐方式,请调用 GridPane.setHalignment(Node n, HPos p)
。要设置垂直对齐,请调用 GridPane.setValignment(Node n, VPos p)
.
您可以阅读 Oracle 自己的布局指南 here。如果您向下滚动直到看到饼图,它们会显示如何在网格窗格中管理布局的示例。
要通过 FXML 管理它,您必须设置特定的 属性。我不记得我的头顶,但我认为它是您的 GridPane 节点中的 alignment="center"
。
我有一个简单的显示,最上面有一个标题,中间有一个列表,然后底部有三个按钮。我希望顶部的标题和底部的按钮水平居中。
这是我一直在尝试使用的代码:
<?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>
这是当前输出:
我已经尝试做各种事情,例如对我的 GridPane 使用 alignment="CENTER"
,但似乎没有任何效果。如有任何帮助,我们将不胜感激!
您需要将 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 属性。
要以编程方式对齐网格窗格内的元素,您必须从 GridPane 调用静态方法 class。
要设置水平对齐方式,请调用 GridPane.setHalignment(Node n, HPos p)
。要设置垂直对齐,请调用 GridPane.setValignment(Node n, VPos p)
.
您可以阅读 Oracle 自己的布局指南 here。如果您向下滚动直到看到饼图,它们会显示如何在网格窗格中管理布局的示例。
要通过 FXML 管理它,您必须设置特定的 属性。我不记得我的头顶,但我认为它是您的 GridPane 节点中的 alignment="center"
。