问:JavaFX8 动态调整网格窗格列的大小

Q: JavaFX8 resize gridpane columns dynamically

我有一个包含 2 行和 2 列的网格窗格。用户应该能够动态更改 UI 上的列宽(最好将鼠标放在分隔线上)。但是我还没有找到办法。

这可以使用网格窗格来完成吗,还是我必须像 Resizeable Gridpane or other container 那样使用拆分窗格,例如在每个窗格中嵌套 vbox?

提前致谢,托马斯

我认为对于一个二乘二的网格,最简单的解决方案是使用三个嵌套的拆分窗格。一个主要的垂直的,然后再次被两个较小的水平的细分(或反之亦然)。你只需要小心同步两个次要的,以便它们平行移动。

为了完整起见,这是我最后所做的:

我有一个 2x2 的网格窗格,调整大小分隔线应该只在下面一行可见。因此,我在跨越两列的网格窗格第二行中添加了一个包含两个区域的拆分窗格。我将内部控件从网格窗格移到了拆分窗格。

现在我只需要通过

将分割窗格分隔线的移动与网格窗格同步

mySplitPane.getDividers().get(0).positionProperty().addListener((observable, oldValue, newValue)

此外,需要另一个侦听器来修复 JavaFX - SplitPane, resize & proportions 问题。这一个在调整网格窗格大小后设置分隔线位置:

myGridPane.widthProperty().addListener((observable, oldValue, newValue)