我需要创建一些表格来存储简单的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。这是我在这里的第一篇文章,我希望我做的一切都是正确的;)
答案 0 :(得分:2)
你正在使用整数除法逻辑,它可以解决问题。请改用浮点逻辑:
cc.setPercentWidth(100.0/horizontalGridCount);
注意100.0使得100.0(和除法结果)成为非整数。
另外,不要在目标应用程序中设置网格线,该设置仅用于调试(我猜这就是为什么你在那里设置并设置为true,但只是提醒一下):
schedule.gridLinesVisibleProperty().set(true);
如果您想在网格单元格上添加边框,可以查看此demo program。