【问题标题】:JavaFX force all cells to be of the same size in a GridPaneJavaFX 强制所有单元格在 GridPane 中具有相同的大小
【发布时间】:2013-10-29 04:53:34
【问题描述】:

我正在构建一个黑白棋 JavaFX 游戏(从 Pro JavaFX 修改示例)。

每个单元格都是一个堆栈窗格,其中包含一个背景和一个代表该片段的椭圆

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

 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 中,我会得到一块板,大小都一样!

据我了解,网格窗格的每个单元格都会自动调整大小以适应其内容。问题是,如果我最大化包含此板的窗口然后重新调整大小,我会得到以下板:

有些行比其他行大:( 我认为发生的事情是,当最大化时,网格窗格增加了每个单元格(堆栈窗格)的大小。由于大小与椭圆半径绑定,因此椭圆半径相应增加。但是当我将窗口缩小时,网格窗格不会调整填充单元格的大小,可能是因为它试图适应现在的大椭圆。

如何避免这个伪影?我知道我可以添加列约束对象,但我必须为每列和每行添加一个吗?那是很多对象。有没有其他办法?

【问题讨论】:

    标签: java javafx maximize


    【解决方案1】:

    原来答案相当简单。 gridpane 没有调整单元格的大小,因为单元格是 StackPane 并且 stackpane minHeight/minWidth 等于它的组件,因此它会拒绝调整大小。 使用setMinSize(0,0) 就可以了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 2017-10-26
      相关资源
      最近更新 更多