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

Javafx网格宽度设置

江迪
2023-03-14

我需要制作某种表格,在其中存储简单的区域节点(之后我会在上面做其他事情——比如水平移动单元格并给它们其他属性,例如标签)表格将有很多列,

这是我生成该表的部分代码。

GridPane schedule = new GridPane();

for (int j = 0; j < horizontalGridCount; ++j) {

  ColumnConstraints cc = new ColumnConstraints();
  cc.setPercentWidth(100/horizontalGridCount);
  schedule.getColumnConstraints().add(cc);
}

for (int i = 0; i < verticalGridCount; ++i) {

  for (int j = 0; j < horizontalGridCount; ++j) {

    final Region grid = new Region();
    grid.setStyle("-fx-background-color: #dddddd;");
    grid.setPrefHeight(30); // set to make regions visible on screen
    grid.setPrefWidth(10); // set to make regions visible on screen

    schedule.add(grid, j, i);

  }
}

schedule.gridLinesVisibleProperty().set(true);

这是我在屏幕上得到的输出。正如你所观察到的,一些网格是紧粒度的,而另一些网格则是紧粒度的

你知道为什么它是错误的,以及如何修复它吗?

附言:这是我在这里的第一个帖子,我希望我做的一切都是对的;)

共有1个答案

陆城
2023-03-14

您正在使用整数除法逻辑,该逻辑对事物进行舍入。请改用浮点逻辑:

cc.setPercentWidth(100.0/horizontalGridCount);

请注意 100.0,它使 100.0(以及除法结果)为非整数。

另外,不要将网格线设置为在目标应用程序中可见,该设置仅用于调试(我想这就是为什么您将其设置为true,但只是为了以防万一):

schedule.gridLinesVisibleProperty().set(true);

如果你想在你的网格单元上设置边框,你可以查看这个演示程序。

 类似资料:
  • 我想使用FXML在JavaFX中创建一个包含3列的GridPane。中柱上有一个大标签。中间列采用标签的宽度。左栏和右栏各占表单剩余宽度的一半(50%)。我尝试将百分之五十的宽度设置为左栏和右栏。但是,宽度设置为整个形状的50%,而不是剩余宽度。例如,表单的宽度为1000px。中柱可能需要400px,而左柱和右柱各自需要300px。即使窗体在运行时调整大小,此公式也应保持不变。

  • 我有4列网格窗格(fixed1,liquid,fixed2,liquide)。每个液柱的宽度必须为=(gridpane width-fixed1-fixed2)/2。换句话说,是液柱宽度的50%。重要提示:所有宽度=液体宽度固定宽度。为了设置列约束,我找到了以下代码: 但是,此代码设置的不是液体宽度的百分比,而是所有宽度的百分比。怎么做?

  • 如何在JavaFX中设置的宽度? 我试过这个: 但我看不到任何变化。

  • 本文向大家介绍如何在HTML中设置表格宽度?,包括了如何在HTML中设置表格宽度?的使用技巧和注意事项,需要的朋友参考一下 要设置HTML中的表格宽度,请使用style属性。style属性指定元素的内联样式。该属性与HTML <table>标记一起使用,具有CSS属性的宽度。HTML5不支持<table>的width属性,因此CSS属性width与style属性一起用于设置表宽度。 请记住,样式属

  • 我有风景。视图内部的网格分为2列。 在自动列(列0)中,我有另一个视图 我希望列表框适合在网格内,不显示滚动条,即使文本块有很长的文本。请提出一个解决办法。

  • 我有一个有3列的网格。问题是第3列比其他两列更宽。都不是 网格-模板-列:重复(自动拟合,最小(33.33%,1fr)); 也不 网格自动列:33%; 工作,因为IE11不支持自动拟合和网格自动列。 在IE11中有没有替代的方法来实现这一点呢?多谢了。