我正在构建一个Reversi JavaFX游戏(修改Pro JavaFX中的示例)。
每个单元格都是一个包含背景和表示该块的椭圆的堆叠窗格
椭圆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中,我会得到一块相同尺寸的电路板!
据我所知,gridpane的每个单元格会自动调整其内容。问题是,如果我最大化包含该板的窗口然后调整大小,我得到以下板:
有些行比其他行大:( 我认为发生的是,当最大化时,栅格窗格增加了每个单元格(叠层板)的大小。由于尺寸与椭圆半径相关,因此椭圆半径相应增加。但是当我然后使窗口变小时,网格窗格不会调整填充单元格的大小,可能是因为它正在尝试适合现在的大椭圆。
如何避免这种神器?我知道我可以添加列约束对象,但是我必须添加一个FOR FOR EACH COLUMN和EACH ROW吗?这是很多对象。还有其他办法吗?
答案 0 :(得分:2)
原来答案很简单。如果单元格是StackPane并且stackpane minHeight / minWidth等于其组件,则gridpane没有调整单元格的大小,因此它将拒绝调整大小。
使用setMinSize(0,0)
可以正常使用