スプリットペインの作成時に Scala Swing SplitPane の相対 (ダブル) ディバイダーの位置を目的の値に設定することはほとんど不可能に思えます。スプリッターは、ほとんどの場合、その親コンポーネントの上部に表示されます。再検証と再描画のさまざまな組み合わせを使用してみましたが、何も機能していないようです。コンストラクターで分割ペインを使用してフレームをインスタンス化し、それを表示して分割ペインの値を設定すると、分割線が正しい位置に表示されます。ユーザーインターフェイスから関数を呼び出して設定した場合も、正しい位置に移動します。しかし、既存のフレームにスプリペインを導入できるようにしたいと考えています。
これは既知の問題ですか? 解決策はありますか?タイマーを使用して、1/4 秒または 0.5 秒後に仕切りの位置を設定する必要がありますか? - 非常に面倒ですが、動作するはずです。
まだ目的の結果が得られないサンプル コード:
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