if(e.getActionCommand().equals("newgame"))
{
System.out.println(s+"");
m=new Mypanel("newGame");
Thread t=new Thread(m);
t.start();
//先删除旧的面板,否则画不出下面的
if(s==0)
{
this.remove(ms);
}else if(s==1)

this.remove(m);
}
this.add(m);
s=1;
this.addKeyListener(m);
//显示,刷新
this.setVisible(true);

}
为什么可以把ms remove掉,而m确不能,当重复执行这段代码时面板m的影子仍在。

解决方案 »

  1.   

    if(s==0)
    {
      this.remove(ms);
    }else if(s==1)
    {  
      this.remove(m);
    }
      this.add(m);这不是在最后又把m add进去了吗。前面刚删掉,这后面又加进去了。
      

  2.   

    搞定了,代码改成下面的就成功了
    if(e.getActionCommand().equals("newgame"))
    {
    if(s==0)
    {
    m=new Mypanel("newGame");
    Thread t=new Thread(m);
    t.start();
    //先删除旧的面板,否则画不出下面的
    this.remove(ms);
    this.add(m);
    s=1;
    this.addKeyListener(m);
    //显示,刷新
    this.setVisible(true);
    }else if(s==1||s==3)
    {
    m1=new Mypanel("newGame");
    Thread t=new Thread(m1);
    t.start();
    //先删除旧的面板,否则画不出下面的
    if(s==1)
    {
    this.remove(m);
    }else if(s==3){
    this.remove(m2);
    }
    this.add(m1);
    s=2;
    this.addKeyListener(m1);
    //显示,刷新
    this.setVisible(true);
    }else if(s==2)
    {
    m2=new Mypanel("newGame");
    Thread t=new Thread(m2);
    t.start();
    //先删除旧的面板,否则画不出下面的
    this.remove(m1);
    this.add(m2);
    s=3;
    this.addKeyListener(m2);
    //显示,刷新
    this.setVisible(true);
    }