2012-04-04 66 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