Scala Swing:在SplitPane上设置相对分割位置
在创建SplitPane时,几乎不可能将Scala Swing SplitPane上的相对(双)dividerlocation设置为所需的值。拆分器几乎总是显示在其父组件的顶部。我尝试过使用各种重新验证和重新绘制的组合,但似乎没有任何效果。如果我在构造函数中实例化一个带有拆分窗格的框架,使其可见,然后设置拆分窗格值,则分隔符将显示在正确的位置。如果我通过从用户界面调用函数来设置它,它也会转到正确的位置。但我希望能够将Splipanes引入现有的帧中 这是一个已知的问题吗?有解决办法吗?我应该在四分之一秒或半秒后使用计时器设置分隔器位置吗非常凌乱,但应该可以用 一些示例代码仍然没有达到预期的结果:Scala Swing:在SplitPane上设置相对分割位置,scala,scala-swing,Scala,Scala Swing,在创建SplitPane时,几乎不可能将Scala Swing SplitPane上的相对(双)dividerlocation设置为所需的值。拆分器几乎总是显示在其父组件的顶部。我尝试过使用各种重新验证和重新绘制的组合,但似乎没有任何效果。如果我在构造函数中实例化一个带有拆分窗格的框架,使其可见,然后设置拆分窗格值,则分隔符将显示在正确的位置。如果我通过从用户界面调用函数来设置它,它也会转到正确的位置。但我希望能够将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
尝试将每个组件的preferredSize设置为0->0。下面是我在处理SplitPane时使用的一些代码
oneTouchExpandable = true
resizeWeight = 0.5
leftComponent.preferredSize = 0 -> 0
rightComponent.preferredSize = 0 -> 0
首先,你应该让这个例子自我约束,这似乎是可行的。据我所知,OneTouchExpanable是不需要的。是的,你是对的。我把它放在那里是因为它是我在使用SplitPane时总是设置的一部分,但它绝对不是必需的。