Javafx网格面板宽度设置

时间:2014-08-26 12:14:05

标签: javafx gridpane

我需要创建一些表格来存储简单的Region节点(之后我会对它们做其他的事情 - 例如水平的megring单元格并给它们其他属性,例如Labels)表格会有很多列, > 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);

Here是我在屏幕上输出的输出。你可以看到一些网格比其他网格更接近

你知道为什么会出错吗?如何解决这个问题?

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

1 个答案:

答案 0 :(得分:2)

你正在使用整数除法逻辑,它可以解决问题。请改用浮点逻辑:

cc.setPercentWidth(100.0/horizontalGridCount);

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

另外,不要在目标应用程序中设置网格线,该设置仅用于调试(我猜这就是为什么你在那里设置并设置为true,但只是提醒一下):

schedule.gridLinesVisibleProperty().set(true);

如果您想在网格单元格上添加边框,可以查看此demo program