如何在 JavaFX GridPane 的列之间设置填充?

Posted

技术标签:

【中文标题】如何在 JavaFX GridPane 的列之间设置填充?【英文标题】:How to set padding between columns of a JavaFX GridPane? 【发布时间】:2013-12-25 13:58:35 【问题描述】:

我正在尝试在 javaFx 程序中显示 2 列网格。这就是我设置网格的方式:

    GridPane grid = new GridPane();

    ColumnConstraints column1 = new ColumnConstraints();
    column1.setPercentWidth(50);
    ColumnConstraints column2 = new ColumnConstraints();
    column2.setPercentWidth(50);
    grid.getColumnConstraints().addAll(column1, column2); 

这就是问题所在。我想在一列结束和另一列开始之间显示一个小空间。但是,这些列显示为相互粘连。

截图如下:

这里每一列都包含“项目名称”和“处理、编辑、删除”按钮。

您可以看到这些列是如何粘合在一起的。我希望它们之间有一些空间。

我该如何解决这个问题?

我的整个 UI 的层次结构是这样的:

Scene > ScrollPane > BorderPane > Vbox (Center) > GridPane

【问题讨论】:

【参考方案1】:

为了更好的外观,您可以混合使用:

grid.setHgap(10); //horizontal gap in pixels => that's what you are asking for
grid.setVgap(10); //vertical gap in pixels
grid.setPadding(new Insets(10, 10, 10, 10)); //margins around the whole grid
                                             //(top/right/bottom/left)

【讨论】:

【参考方案2】:

除了 assylias 的回答之外,您还可以为网格中的任何给定节点配置边距:

GridPane.setMargin(node, new Insets(5, 10, 5, 10));

GridPane.setMarginjavadoc:

设置子元素被网格窗格包含时的边距。如果设置,网格窗格将在其周围放置边距空间。将值设置为 null 将删除约束。

最终(Java 8 之后),JavaFX 可能允许您在任何节点周围设置边距,而不仅仅是 GridPane 中的节点。

【讨论】:

以上是关于如何在 JavaFX GridPane 的列之间设置填充?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaFX 的 GridPane 中删除“幽灵线”?

我可以强制 JavaFX 的 GridPane 平均分配空间吗?

如何在 JavaFX 中交换两个 GridPane 节点?

JavaFX中GridPane的行居中对齐

如何使用 GridPane JavaFX 使按钮跨越多个列/行?

使用 GridPane 为不同行中的每个单元格实现唯一的列宽?