0

我有一个带有 BorderLayout 的窗口,其中 JPanel 包含放在 CENTER 上的东西,大小为 800*250。我希望点击一个按钮,JPanel 移动到 NORTH,另一个 JPanel 位于 CENTER。我试过这个,但它只调整了我的窗口大小而没有做任何其他事情。

我试过这个,但它似乎不起作用。

public void actionPerformed(ActionEvent e) {
            frame.setPreferredSize(new Dimension(800,550));
            frame.removeAll();
            frame.add(northpanel, BorderLayout.NORTH);
            frame.add(southpanel, BorderLayout.CENTER);
            frame.getContentPane().repaint();
            frame.getContentPane().revalidate();
            frame.pack();
        }

北面板之前设置在中心。

谢谢你。:)

4

1 回答 1

3

add() 和 remove() 方法被覆盖,因此它们在内容窗格上自动执行所有操作。请记住,JFrame 只是一个容器,重要的是您的内容窗格。removeAll() 方法不会像那样被覆盖。你应该做的是:

frame.getContentPane().removeAll();

您可以在 Oracle 网站上阅读更多信息 :)

使用顶级容器

于 2013-01-06T18:21:57.397 回答