Splitpanes的比例调整

时间:2017-12-10 01:44:43

标签: javafx javafx-8

当我调整内部具有分割窗格的窗口时,我的分割窗格会以看似无法预测的方式调整大小。有时候左侧窗格会有更多空间,有时候是正确的空间。有时,额外的房间会分散开来,有时会完全放在一个窗格上。

例如,最大化和恢复窗口将改变分割窗格的布局 - 在过程之前,它们将以某种方式设置,之后它们将具有完全不同的位置。

我希望splitpanes始终保持相同的比例。因此,如果在调整大小之前一个是宽度的30%而另一个是宽度的70%,我希望他们在调整大小完成后继续保持30%/ 70%。

有关如何完成此任务的任何建议?

2 个答案:

答案 0 :(得分:1)

很高兴你回答了自己的问题。我建议使用Platform.runLater而不是setResizableWithParent来处理您遇到问题的聪明代码。请参阅我的回答there

答案 1 :(得分:0)

我能够通过将UI中的所有顶级项目设置为不能与父级重新调整来解决此问题:

    SplitPane.setResizableWithParent( libraryPane, Boolean.FALSE );
    SplitPane.setResizableWithParent( artSplitPane, Boolean.FALSE );
    SplitPane.setResizableWithParent( currentListSplitPane, Boolean.FALSE );
    SplitPane.setResizableWithParent( primarySplitPane, Boolean.FALSE );
    SplitPane.setResizableWithParent( currentPlayingPane, Boolean.FALSE );

我不知道它是如何工作的或原因,但我偶然发现它并且它完全符合我的要求:四个窗格线性扩展,同时保持基本比率(库,主要分割,当前列表,艺术)和一个窗格不会改变大小(当前播放)。

这是一个非常注释的图像:

enter image description here

我最好的猜测是有一些聪明的代码试图在窗口调整大小上智能地调整内容大小,并且通过将ResizableWithParent设置为false,聪明的代码将关闭,一些基本代码将启动。

然而它起作用,这对我来说非常有效,我希望它能帮助别人。

相关问题