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

2022-09-01 10:23:56

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

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

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


答案 1

您必须致电

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

removeAll()尚未被覆盖,如有必要或转发到。add()remove()contentPane


答案 2

假设您的目标是在清除帧后添加其他内容,则应在添加 thoes 组件以更新帧后调用 validate

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

推荐