2012-04-04 3 views
2

私は2つのJSplitPane(一方はもう一方)を表示するJFrameを持っています。JFrameのレイアウトが一貫していません

何らかの理由で、ディバイダの位置が矛盾しています。

私が言っていることは、ときには、私が設定した正しい位置に表示されることがあり、それ以外の時は表示されないということです。位置が間違っている場合は、両方の分割パネルで間違っています。

 JPanel javaPanel = core.getComponentPanel(2); 
     JSplitPane splitA = new JSplitPane(JSplitPane.VERTICAL_SPLIT, 
       javaPanel.getComponent(0), javaPanel.getComponent(1)); 
     double pos = (screenDim.getHeight() * 72)/100; 
     splitA.setDividerLocation((int) pos); 
     JSplitPane mainSplitP = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, 
       new JScrollPane(getCoreComponents()), splitA); 
     return mainSplitP; 

私はCardLayoutとのJPanelを持ったJFrameの場合:ここで私はJSplitPanesのために使用していますコードです。 mainSplitPを追加するには、次の方法を使用します。

private void setFrameContent(Container content, String title) { 
     appContent.add(content, title); 
     CardLayout cl = (CardLayout) (appContent.getLayout()); 
     cl.show(appContent, title); 
     appFrame.pack(); 
    } 

この矛盾の原因は何ですか?

+0

をラップたら、彼らがしているとき、私はあなたが使用しているレイアウトマネージャは何かを持っていると思いますあなたの問題で。 –

+0

レイアウトはCardLayoutです。そして、私はいつも同じ結果を得てはいけませんか? – Giannis

+1

SwingUtilities.invokeLaterで設定された仕切りの位置を囲むようにします – StanislavL

答えて

2
+0

鋳造でいくつかの醜いコードを追加しなければならなかったが、少なくともそれは動作する。ありがとう! – Giannis

+0

もう1つ。 JSplitPaneに含まれるコンポーネントの推奨サイズに基づいて仕切りの位置を設定する方法はありますか?そのようにして、私のコンポーネントが設定された優先サイズを取得したので、手動で位置を設定する必要はありませんか? – Giannis

関連する問題