我正在编写一个程序,我有一个JFrame,我想从中删除所有组件,然后只添加一个组件并重新绘制框架。到目前为止我所拥有的是类似下面的代码(在实现JFrame的对象中调用,其中StartPanel实现JPanel):
removeAll();
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
然而,当我运行代码时,它显示一个空窗口(不是startPanel),当我最小化/调整窗口大小时,窗口变黑。如果我遗漏了removeAll()
并且JFrame上已经没有元素,那么它就会显示startPanel。关于如何实际删除所有内容,然后让新面板仍然出现的任何想法?
答案 0 :(得分:49)
你必须致电
private JFrame frame = new JFrame();
...
...
frame.getContentPane().removeAll();
frame.repaint();
removeAll()
未被覆盖为add()
或remove()
,以便在必要时转发至contentPane
。
答案 1 :(得分:5)
getContentPane().removeAll();
getContentPane().repaint();
答案 2 :(得分:4)
假设您的目标是在之后添加其他内容 你清除了你应该调用后验证的框架 添加组件来更新它
getContentPane().removeAll();
add(new component);
validate();