我在我的主GUI中有一个SplitPane
行为奇怪。我试图通过编写/阅读简单的文本文件来保存执行程序之间的位置。(JavaFX)SplitPane.getDividerPositions()不一致
但是,我注意到getPosition()
方法在将其保存到文件时返回不正确的值。
在退出程序,我现在的储蓄与此代码的位置:
Settings.setSplitPaneLocation(Global.commentMasterController.getSplitPane().getDividers().get(0).getPosition());
Global
是一个Singleton保存到我的主界面控制器引用。Settings
是另一个包含从设置文件加载的值的单例。
在加载程序,我设置了SplitPane
的位置从Settings
类加载上次保存的值:
splitPane.setDividerPosition(0, Settings.getSplitPaneLocation());
的问题是,当我加载的程序,即使我不根本不调整SplitPane
位置(加载程序并立即退出),保存的位置与最初设置的位置不同。
这里是输出,显示该程序连续运行3次。再次,这只是运行该程序,并立即退出;我不调整在所有的任何控件的位置:
setDividerPosition(): 0.9247730220492867
getDividerPosition(): 0.9105058365758755
setDividerPosition(): 0.9105058365758755
getDividerPosition(): 0.893644617380026
setDividerPosition(): 0.893644617380026
getDividerPosition(): 0.874189364461738
正如你所看到的,getDividerPosition()
返回比除法器的实际位置不同的值。
我已经检查了SplitPane
内的子节点的最大/最小尺寸和最小尺寸被设置为0
我用更多的细节/代码更新了我的问题。我已经检查了孩子的最小规模,问题依然存在。 – Zephyr