在创建拆分窗格时将 Scala Swing SplitPane 上的相对(双)分隔符位置设置为所需值似乎几乎是不可能的。拆分器几乎总是出现在其父组件的顶部。我尝试过使用重新验证和重新绘制的各种组合,但似乎没有任何效果。如果我在构造函数中使用拆分窗格实例化一个框架,使其可见,然后设置拆分窗格值,则分隔符出现在正确的位置。如果我通过从用户界面调用函数来设置它,它也会转到正确的位置。但我希望能够将 Splipanes 引入现有的框架中。
这是一个已知问题吗?有解决办法吗?我应该在四分之一秒或半秒后使用计时器来设置分隔线位置吗?- 非常混乱,但应该工作。
一些示例代码,仍然没有达到预期的结果:
val newSplit = new CSplit(Right(canv1), Right(newMapCanv))
panel.layout(newSplit.pane) = BorderPanel.Position.Center
thisScn.visible = true
newSplit.pane.dividerLocation = 0.5
newSplit.pane.bottomComponent = canv1
newSplit.pane.topComponent = canv2
newSplit.pane.dividerLocation = 0.5
newSplit.pane.revalidate
newSplit.pane.repaint
panel.revalidate
panel.repaint
newSplit.pane.dividerLocation = 0.5
newSplit.pane.revalidate
newSplit.pane.repaint
newSplit.pane.dividerLocation = 0.5