JavaFX强制所有单元格在GridPane中具有相同的大小

时间:2013-10-20 19:41:28

标签: java javafx maximize

我正在构建一个Reversi JavaFX游戏(修改Pro JavaFX中的示例)。

每个单元格都是一个包含背景和表示该块的椭圆的堆叠窗格 reversi background and piece

椭圆radiusX绑定到radiusY(所以它是一个圆圈),radiusY绑定到父级宽度和高度的min:

 DoubleBinding parentWidth = Bindings.selectDouble(parentProperty(), "width");
 DoubleBinding parentHeight = Bindings.selectDouble(parentProperty(), "height");
    //the radius will be the min of the two
 NumberBinding radius = Bindings.min(parentWidth,parentHeight).divide(2);

现在,如果我把很多这些放在gridPane中,我会得到一块相同尺寸的电路板! enter image description here

据我所知,gridpane的每个单元格会自动调整其内容。问题是,如果我最大化包含该板的窗口然后调整大小,我得到以下板: enter image description here

有些行比其他行大:( 我认为发生的是,当最大化时,栅格窗格增加了每个单元格(叠层板)的大小。由于尺寸与椭圆半径相关,因此椭圆半径相应增加。但是当我然后使窗口变小时,网格窗格不会调整填充单元格的大小,可能是因为它正在尝试适合现在的大椭圆。

如何避免这种神器?我知道我可以添加列约束对象,但是我必须添加一个FOR FOR EACH COLUMN和EACH ROW吗?这是很多对象。还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

原来答案很简单。如果单元格是StackPane并且stackpane minHeight / minWidth等于其组件,则gridpane没有调整单元格的大小,因此它将拒绝调整大小。 使用setMinSize(0,0)可以正常使用