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

javaFX中网格列之间的填充

唐默
2023-03-14

我试图在javaFX程序中显示一个4列网格。这就是我设置网格的方式。

 GridPane gridPane = new GridPane();
 gridPane.setHgap(10); 
 gridPane.setVgap(10);
 ColumnConstraints c1 = new ColumnConstraints();
 c1.setPercentWidth(25);
 ColumnConstraints c2 = new ColumnConstraints();
 c2.setPercentWidth(25);
 ColumnConstraints c3 = new ColumnConstraints();
 c3.setPercentWidth(25);
 ColumnConstraints c4 = new ColumnConstraints();
 c4.setPercentWidth(25);
 gridPane.getColumnConstraints().addAll(c1,c2,c3,c4);

我已将标签和文本字段分别放在列 1,3 和列 2,4 中。问题是文本字段和下一个标签之间存在间隙,因此减少了第二个文本字段的宽度。

我该如何解决这个问题?

共有2个答案

常心水
2023-03-14

ColumnConstraints类中还有许多其他属性可供使用。您可能希望标签对齐;您可能还希望文本字段增长并填充空间,而标签只需要足够的空间来容纳文本。所以我会这样做:

GridPane gridPane = new GridPane();
 gridPane.setHgap(10); 
 gridPane.setVgap(10);
 ColumnConstraints c1 = new ColumnConstraints();
 c1.setHalignment(HPos.RIGHT);
 c1.setHgrow(Priority.NEVER);
 ColumnConstraints c2 = new ColumnConstraints();
 c2.setHgrow(Priority.ALWAYS);
 c2.setFillWidth(true);
 ColumnConstraints c3 = new ColumnConstraints();
 c3.setHalignment(HPos.RIGHT);
 c3.setHgrow(Priority.NEVER);
 ColumnConstraints c4 = new ColumnConstraints();
 c4.setHgrow(Priority.ALWAYS);
 c4.setFillWidth(true);
 gridPane.getColumnConstraints().addAll(c1,c2,c3,c4);
彭宏深
2023-03-14

这是一个使用GridPane的非常简单的应用程序。它使用相同的 gridPane 列约束,并具有示例使用的 LabelTextField

如果您担心标签和文本字段之间的间隙,则必须记住网格窗格的总宽度分为 4 个部分(每个部分 25%)。文本字段填充空间,标签也填充空间,但我们只看到文本。

MVCE电码:

public class GridPaneExample extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        GridPane gridPane = new GridPane();
        gridPane.setHgap(10);
        gridPane.setVgap(10);
        gridPane.setPadding(new Insets(10));
        ColumnConstraints c1 = new ColumnConstraints();
        c1.setPercentWidth(25);
        ColumnConstraints c2 = new ColumnConstraints();
        c2.setPercentWidth(25);
        ColumnConstraints c3 = new ColumnConstraints();
        c3.setPercentWidth(25);
        ColumnConstraints c4 = new ColumnConstraints();
        c4.setPercentWidth(25);
        gridPane.getColumnConstraints().addAll(c1, c2, c3, c4);

        gridPane.add(new Label("Profile ID"), 0, 0);
        gridPane.add(new TextField(), 1, 0);
        gridPane.add(new Label("Profile Name"), 2, 0);
        gridPane.add(new TextField(), 3, 0);
        gridPane.add(new Label("Transfer Object"), 0, 1);
        gridPane.add(new TextField(), 1, 1);
        gridPane.add(new Label("Class Name"), 2, 1);
        gridPane.add(new TextField(), 3, 1);
        primaryStage.setScene(new Scene(gridPane, 500, 500));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

如果您仍然不能调整代码并修复它,请考虑编辑代码并添加MCVE

 类似资料:
  • 我试图在javaFx程序中显示一个2列网格。这就是我设置网格的方式: 问题是。我想展示一个小空间,在一列结束和另一列开始之间。然而,这些柱子却像胶水一样粘在一起。 以下是一个截图: 这里每一列都包含项目名称和处理、编辑、删除按钮。 你可以看到柱子是如何粘在一起的。我希望它们之间有一些空间。 我该怎么解决这个问题? 我的整个UI的层次结构如下: 场景

  • 在我的Android应用程序中,我使用通过使用在网格中显示项目。在GridView中,为了指定元素之间的间距,我将设置HorizonalSpacing和verticalSpacing属性。 那么,如何在上执行同样的操作呢?

  • 我是JavaFX的新手,我正在尝试制作一个棋盘。首先,我想制作一个基于数组的填充随机颜色的方格网格。我不知道为什么,但是方块没有填满网格的其余部分。我还想使用约束来设置网格的高度和宽度。 左上方只出现一个方块,为什么会这样呢?

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

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

  • 我一直在看教程,我似乎无法得到一个表来填充。我也在使用net beans和scenebuilder。如有任何帮助,我们将不胜感激!挣扎了5个小时。 下面是的代码 以下是我的主要内容: