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

jgzswidk  于 2023-09-29  发布在  Java
关注(0)|答案(3)|浏览(117)

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

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

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

5sxhfpxr

5sxhfpxr1#

必须调用

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

removeAll()尚未被覆盖为add()remove(),以便根据需要转发到contentPane

nzrxty8p

nzrxty8p2#

假设你的目标是在清除框架后添加其他东西,你应该在添加这些组件后调用validate来更新它。

getContentPane().removeAll();
add(/*a new component*/);
validate();
20jt8wwn

20jt8wwn3#

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

相关问题