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

如何在网格窗格中对齐HRow?

钮轩昂
2023-03-14

当我运行JavaFx应用程序时,我有一种奇怪的行为:

如您所见,元素没有正确对齐。我已经使用SceneBuilder创建了该视图,而编辑器中没有这个间隙。

我的视图是由一个GridPane组成的。GridPane的右侧单元格(在图片上)每个单元格都包含一个HBox,每个单元格都包含元素(按钮/文本字段)。我没有在这里配置任何特定的东西,也没有使用任何CSS。

以下是完整的FXML:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MyController">
   <children>
      <GridPane hgap="3.0" vgap="3.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <columnConstraints>
          <ColumnConstraints hgrow="NEVER" />
          <ColumnConstraints hgrow="NEVER" />
            <ColumnConstraints hgrow="ALWAYS" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints vgrow="SOMETIMES" />
          <RowConstraints vgrow="SOMETIMES" />
          <RowConstraints vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Label text="label1" />
            <Label text="label2" GridPane.rowIndex="1" />
            <Button defaultButton="true" mnemonicParsing="false" onAction="#handleGo" text="Go!" GridPane.rowIndex="2">
               <graphic>
                  <TextField fx:id="iterations" alignment="CENTER" prefWidth="43.0" style="-fx-padding: 0.166667em 0.333333em 0.166667em 0.333333em;" text="50000" />
               </graphic></Button>
            <Button fx:id="selectFileButton" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#handleFileSelection" text="Select file" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <HBox spacing="3.0" GridPane.columnIndex="2">
               <children>
                  <TextField fx:id="customValue" editable="false" HBox.hgrow="ALWAYS" />
                  <Button fx:id="deleteButton" mnemonicParsing="false" onAction="#handleDelete" text="Delete" visible="false" />
               </children>
            </HBox>
            <HBox spacing="3.0" GridPane.columnIndex="2" GridPane.rowIndex="1">
               <children>
                  <Button fx:id="editButton" mnemonicParsing="false" text="Edit" />
                  <Button mnemonicParsing="false" text="New" />
               </children>
            </HBox>
            <ComboBox fx:id="selection" maxWidth="1.7976931348623157E308" onAction="#handleSelection" GridPane.columnIndex="1" />
         </children>
      </GridPane>
   </children>
</AnchorPane>

我是不是漏了什么?

共有1个答案

施俊哲
2023-03-14

GridPane中控件的默认对齐方式(可能用于一般控件?)是左上角,而对于HBox,默认值是左上角。添加

alignment="CENTER_LEFT"

到您的HBox应该正确对齐它们。

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

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

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

  • 我有以下代码,成功地将单元格的内容集中在我的Vaadin网格中。 它让它看起来像这样。 如何实现垂直居中?当我尝试添加样式名称 v-对齐中间时,它什么也没做。

  • 我正在JavaFx中开发一个应用程序,其中我有两个选项卡。 在第一个选项卡中,我有ComboBox: 在第二个选项卡中,我有这样的Gridpane: 我想要的是当用户从Tab A的组合框中选择3时,例如: 它应该在Tab B的Gridpane中添加3行,每列添加文本字段、复选框和datepicker。A列有文本字段,B列有复选框,C列有日期选择器,如下所示: 请帮助我如何才能实现这一点,实现后,我

  • 我正在开发一个项目,该项目是使用SVG构建图表所必需的,因为素面没有我需要使用的规格。所以,我所做的基本上是使用标签 $ xmlns:xlink=“http://www.w3.org/1999/xlink” 那个代码: svg工作正常。问题是,当我将svg放入panelGroup时,我的panelGrid停止并排对齐我的内容,并将所有内容放入,就好像它是columns="1 "一样。 有人有主意吗