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

sca*_*ity 27 java swing jframe repaint removeall

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

removeAll();    
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
Run Code Online (Sandbox Code Playgroud)

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

Kav*_*vka 50

你必须打电话

 private JFrame frame = new JFrame();
 ...
 ...
 frame.getContentPane().removeAll();
 frame.repaint();
Run Code Online (Sandbox Code Playgroud)

removeAll()还没有被覆盖的add()remove()转发的contentPane必要.


Md *_*med 5

getContentPane().removeAll();
getContentPane().repaint();
Run Code Online (Sandbox Code Playgroud)


joe*_*ier 5

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

getContentPane().removeAll();
add(new component);
validate();
Run Code Online (Sandbox Code Playgroud)