2012-04-04 61 views
2

我有一個顯示兩個JSplitPanes(一個在另一個內部)的JFrame。不一致的JFrame佈局

由於某些原因,分隔器位置不一致。

我的意思是有時它顯示在我設置的正確位置,而其他時間則不顯示。當位置錯誤時,對於兩個分體面板都是錯誤的。下面是我使用的JSplitPanes代碼:

 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; 

在的JFrame我有CardLayout一個JPanel。要添加主SplitP我使用以下方法:

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

什麼可能導致這種不一致?

+0

我認爲你正在使用的佈局管理器有事情做與您的問題。 – 2012-04-04 13:51:26

+0

佈局是CardLayout。我不應該總是得到相同的結果嗎? – Giannis 2012-04-04 13:52:19

+1

TRy在SwingUtilities.invokeLater中設置環繞分隔符位置 – StanislavL 2012-04-04 13:54:33

回答

2
+0

不得不添加一些醜陋的代碼與鑄造,但至少它的作品。謝謝 ! – Giannis 2012-04-04 14:16:33

+0

還有一件事。有沒有辦法根據JSplitPane包含的組件的首選大小來獲取分區位置?這樣,因爲我的組件有一個設置的首選大小,我可能不需要手動設置位置? – Giannis 2012-04-04 14:23:39