我有一个带有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上。
谢谢。 :)
答案 0 :(得分:3)
add()和remove()方法被覆盖,因此它们会在内容窗格中自动执行所有操作。请记住,JFrame只是一个容器,重要的是您的内容窗格。 removeAll()方法不会像这样重写。你应该做的是:
frame.getContentPane().removeAll();
您可以在Oracle网站上阅读更多内容:)