如何从Java中的JFrame中删除所有组件?
我正在编写一个程序,我有一个JFrame,我想从中删除所有组件,然后只添加一个组件并重新绘制框架。 到目前为止我所拥有的是类似下面的代码(在实现JFrame的对象中调用,其中StartPanel实现JPanel):
removeAll(); startPanel = new StartPanel(); startPanel.setVisible(true); add(startPanel); revalidate(); repaint();
但是,当我运行代码时,它显示一个空窗口(不是startPanel),当我最小化/调整窗口大小时,窗口变黑。 如果我省略了removeAll()
并且JFrame上已经没有元素,那么它就会显示startPanel。 有关如何实际删除所有内容,然后让新面板仍然显示的任何想法?
你必须打电话
private JFrame frame = new JFrame(); ... ... frame.getContentPane().removeAll(); frame.repaint();
removeAll()
没有被重写为add()
或remove()
以根据需要转发到contentPane
。
getContentPane().removeAll(); getContentPane().repaint();
假设您的目标是在清除框架后添加其他内容,则应在添加组件后调用validate以更新它
getContentPane().removeAll(); add(new component); validate();