当前位置: 首页 > 知识库问答 >
问题:

在JavaFX中居中对齐网格窗格的行

朱宇航
2023-03-14

我在fxml中有一个GridPane,它有一个文本标题和4个按钮。GridPane本身是居中对齐的,但所有按钮都在网格的列内左对齐。我知道如何使用Java代码更改项目的对齐方式,但这不是理想的情况,因为我希望所有样式都使用FXML和CSS处理。有谁能建议在JavaFX的GridPane视图中居中对齐单元格元素的最佳方法吗?

共有3个答案

许自强
2023-03-14

您需要单独对齐GridPane中的每个对象,而不是GridPane本身。

要做到这一点,去哟布局: ObjectName(ex.按钮),并在对齐选择中心。

舒斯伯
2023-03-14

在FXML中:

<GridPane ...>
  <columnConstraints>

    <!-- one of these for each column: you can obviously have other properties set here if needed -->
    <ColumnConstraints halignment="CENTER" />

  </columnConstraints>
</GridPane>
严嘉良
2023-03-14

要将GridPane的子节点对齐到中心,需要设置子节点的Halignment和Valignment。

在Java代码中,您可以执行类似的操作:

GridPane.setHalignment(node, HPos.CENTER); // To align horizontally in the cell
GridPane.setValignment(node, VPos.CENTER); // To align vertically in the cell

在FMXL中,您可以通过以下方式实现类似的效果:

<GridPane>
      ... // other properties
     <children>
        <Button mnemonicParsing="false" text="Button" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
     </children>
</GridPane>

如果要以相同的顺序对齐特定列或行的所有节点,有一种更简单的方法可以实现这一点。您可以创建ColumnConstraints或RowConstraints并将其添加到GridPane,而不是向节点添加halignment/valignment

<GridPane>
    <columnConstraints>
        <ColumnConstraints hgrow="SOMETIMES" halignment="CENTER" minWidth="10.0" prefWidth="100.0" />
         ... // More constraints for other columns
    </columnConstraints>
    <children>
         <Button mnemonicParsing="false" text="Button" />
    </children>
</GridPane>

您也可以类似地添加RowConstraint

 类似资料:
  • 我目前有一个GridPane作为布局的根,我有另一个GridPane里面包含2个标签。我试图让这些标签中的一个左对齐,另一个右对齐。 我尝试使用GridPane.halignment="右",但这对标签没有影响。 我的布局代码如下: 如何按照我想要的方式对齐这些标签?GridPane对我想做的事情来说是理想的吗?我对JavaFX相当缺乏经验,但对Android的布局管理器很熟悉。

  • 当我运行JavaFx应用程序时,我有一种奇怪的行为: 如您所见,元素没有正确对齐。我已经使用SceneBuilder创建了该视图,而编辑器中没有这个间隙。 我的视图是由一个GridPane组成的。GridPane的右侧单元格(在图片上)每个单元格都包含一个HBox,每个单元格都包含元素(按钮/文本字段)。我没有在这里配置任何特定的东西,也没有使用任何CSS。 以下是完整的FXML: 我是不是漏了什

  • 在我的项目中,我有一个包含多个值的ComboBox。当我的应用程序开始时,我执行以下操作: 其中是字符串列表。 同时,在应用程序中,可以更改此值。但是,由于我已经将此组合框添加到我的GridPane中,然后在该值更改(gui.columns)时添加到场景中,因此新值没有显示在组合框中。因为我已经添加了旧的gui.course。有没有办法用新的gui.course_P更新createTestButt

  • 我试图将乘法VBox添加到scrollpane中的gridpane(在下面的codesnippet中称为refPane)。 它在一行中添加不超过ITEMS_PER_ROW的Vbox,并在下一行中继续。也不应该有更多的行,然后ITEMS_PER_COLUM可见。问题是,如果我添加更多的ITEMS_PER_ROW*ITEMS_PER_COLUMN到网格中,而不是obingbeingscrollable

  • 问题内容: 我在div中设置了一堆相同大小的块,该div 设置为对齐块。 这些块会水平填充div,并且随着浏览器窗口的缩小,一些块会换行,从而创建更多的行和更少的列。我希望所有内容仍保持居中,最后一行对齐到左侧,如下所示: 当前发生的情况是: 我不能像一个建议那样添加额外的填充div,因为可以有任意数量的块,并且行和列的数量将根据浏览器的宽度而变化。由于相同的原因,我也不能直接设置第7块的样式。无

  • 问题内容: 我正在尝试使用CSS Grid创建一个简单的页面。 我无法做的是将HTML文本集中到相应的网格单元格。 我尝试将内容放置在和选择器内部和外部的单独s中,并使用某些CSS属性无效。 我该怎么做呢? 问题答案: 这个答案有两个主要部分: 了解对齐方式在CSS Grid中的工作方式。 在CSS Grid中居中的六种方法。 如果您仅对解决方案感兴趣,请跳过第一部分。 网格布局的结构和范围 要完