我正在编写一个程序,其中有一个 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();
add(/*a new component*/);
validate();
getContentPane().removeAll();
getContentPane().repaint();