如何从Java中的JFrame中删除所有组件?

时间:2012-02-19 05:46:16

标签: java swing jframe repaint removeall

我正在编写一个程序,我有一个JFrame,我想从中删除所有组件,然后只添加一个组件并重新绘制框架。到目前为止我所拥有的是类似下面的代码(在实现JFrame的对象中调用,其中StartPanel实现JPanel):

removeAll();    
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();

然而,当我运行代码时,它显示一个空窗口(不是startPanel),当我最小化/调整窗口大小时,窗口变黑。如果我遗漏了removeAll()并且JFrame上已经没有元素,那么它就会显示startPanel。关于如何实际删除所有内容,然后让新面板仍然出现的任何想法?

3 个答案:

答案 0 :(得分:49)

你必须致电

 private JFrame frame = new JFrame();
 ...
 ...
 frame.getContentPane().removeAll();
 frame.repaint();

removeAll()未被覆盖为add()remove(),以便在必要时转发至contentPane

答案 1 :(得分:5)

getContentPane().removeAll();
getContentPane().repaint();

答案 2 :(得分:4)

假设您的目标是在之后添加其他内容 你清除了你应该调用后验证的框架 添加组件来更新它

getContentPane().removeAll();
add(new component);
validate();