2

我有一个 JFrame,它显示两个 JSplitPanes(一个在另一个里面)。

由于某种原因,分隔线的位置不一致。

我的意思是有时它显示在我设置它的正确位置,而其他时候则没有。当位置错误时,两个拆分面板都是错误的。这是我用于 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。要添加 mainSplitP,我使用以下方法:

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

什么可能导致这种不一致?

4

1 回答 1

2
  • JComponents之后知道自己的大小pack(),或者当它们曾经在屏幕上可见时

  • 将 JSplitPane 的 setDividerLocation包装到 invokeLater

于 2012-04-04T13:57:31.457 回答