1

我需要制作某种表格,在其中存储简单的区域节点(之后我将对它们做其他事情 - 例如水平合并单元格并为它们提供其他属性,例如标签)表格将有很多列,> 200。我的目标是强制每个网格具有相同的宽度(非常重要)并动态生成该表。

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

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);

是我在屏幕上得到的输出。正如你所看到的,一些网格是细粒度的,然后是其他网格

你知道为什么它是错误的以及如何解决这个问题吗?

PS这是我在这里的第一篇文章,我希望我做的一切都是正确的;)

4

1 回答 1

2

您正在使用整数除法逻辑,它会四舍五入。改用浮点逻辑:

cc.setPercentWidth(100.0/horizontalGridCount);

请注意 100.0 使 100.0 (和除法结果)成为非整数。

也不要在目标应用程序中设置可见的网格线,该设置仅用于调试(我想这就是为什么你在那里设置它并设置为 true,但只是提醒以防万一):

schedule.gridLinesVisibleProperty().set(true);

如果您想要网格单元格上的边框,您可以查看此演示程序

于 2014-08-26T12:44:25.150 回答