java swing库中remove和removeAll有什么区别?我有一个控制面板和一个可以用控制面板更改的面板。此更改在父框架对象中完成。当我使用代码时:
public void showNextPanel(){
if(hasNextPanel()){
getSelectedPanel().setVisible(false);
getContentPane().removeAll();
getContentPane().add(controlPanel);
selectedPanel++;
getContentPane().add(getSelectedPanel());
getSelectedPanel().setVisible(true);
revalidate();
repaint();
}else{
System.exit(0);
}
}
然后一切都按预期工作。当我在 remove 语句中更改 removeAll 时,这个选定的面板变为灰色,但仍然可见。调整我的框架大小时,新框架是可见的,您可以看到它隐藏在先前选定的面板后面。然后我的代码是:
public void showNextPanel(){
if(hasNextPanel()){
getSelectedPanel().setVisible(false);
getContentPane().remove(getSelectedPanel());
selectedPanel++;
getContentPane().add(getSelectedPanel());
getSelectedPanel().setVisible(true);
revalidate();
repaint();
}else{
System.exit(0);
}
}
为什么我的 JPanel 在使用 removeAll 时会消失,但在使用 remove 时不会消失?