JFrame布局不一致



我有一个JFrame,它显示两个JSplitPane(一个在另一个内部)。

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

我的意思是,有时它会显示在我设置的正确位置,而其他时候则不会。当位置错误时,两个拆分面板都是错误的。以下是我在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();
    }

是什么原因导致了这种不一致?

  • JComponentspack()之后知道自己的大小,或者当它们在屏幕上一次性可见时

  • 将JSplitPane的setDividerLocation包装到invokeLater

最新更新