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

问题描述 投票:0回答:3

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

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

但是,当我运行代码时,它显示一个空窗口(不是 startPanel),当我最小化/调整窗口大小时,窗口会变成黑色。如果我省略

removeAll()
并且 JFrame 上还没有元素,它会很好地显示 startPanel。关于如何实际删除所有内容,然后让新面板仍然显示的任何想法?

java swing jframe repaint removeall
3个回答
59
投票

你必须打电话

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

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


6
投票

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

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

5
投票
getContentPane().removeAll();
getContentPane().repaint();
© www.soinside.com 2019 - 2024. All rights reserved.