2

在创建拆分窗格时将 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
4

1 回答 1

2

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

oneTouchExpandable = true
resizeWeight = 0.5
leftComponent.preferredSize = 0 -> 0
rightComponent.preferredSize = 0 -> 0
于 2012-08-20T02:20:26.570 回答