在Java中动态更改BorderLayout

时间:2013-01-06 18:01:16

标签: java user-interface border-layout

我有一个带有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();
        }

northpanel之前是在CENTER上。

谢谢。 :)

1 个答案:

答案 0 :(得分:3)

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

frame.getContentPane().removeAll();

您可以在Oracle网站上阅读更多内容:)

Using Top-Level Containers