Scala Swing:在SplitPane上设置相对dividerlocation

时间:2012-08-18 10:23:25

标签: scala scala-swing

在创建splitpane时,Scala Swing SplitPane上的相对(Double)dividerlocation几乎不可能设置为所需的值。拆分器几乎总是出现在其父组件的顶部。我尝试过使用revalidate和repaint的各种组合,但似乎没有任何效果。如果我在构造函数中实例化带有splitpane的框架,使其可见,然后设置拆分窗格值,则分隔符将显示在正确的位置。如果我通过从用户界面调用函数来设置它,它也会转到正确的位置。但我希望能够将Splipanes引入现有的Frames。

这是一个已知问题吗?有解决方案吗?我应该在四分之一秒或半秒后使用计时器设置分频器位置吗? - 非常混乱,但应该工作。

一些示例代码,仍然没有达到预期的结果:

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

1 个答案:

答案 0 :(得分:2)

尝试将每个组件的preferredSize设置为0 - >这是我在处理SplitPane时使用的一些代码

oneTouchExpandable = true
resizeWeight = 0.5
leftComponent.preferredSize = 0 -> 0
rightComponent.preferredSize = 0 -> 0