实现一个网络对战的牌类游戏,纸牌是通过paint方法绘制的。网络部分有下面一段代码,即时进入了case 21也没有调用repaint方法,初学java,急求,各位大牛帮帮忙,谢谢了:
 Datatype d;
          do{
            d = (Datatype) m_input.readObject();
           switch(d.flag)
           {
           case 0:break;
                case 1:
                     if(JOptionPane.showConfirmDialog(null, "可以开始比赛了么", "对手请求开始比赛", JOptionPane.YES_NO_OPTION) == 1)
                            send(new Datatype(12));
                     else{
                      JMessage.append("准备完毕,开始游戏\n你是农民,对方是地主\n");
                      JMessage.selectAll();
                      send(new Datatype(11));
                      mp.initializemap();
                      mp.turn = false;
                        mp.flag = 1;
                      isStarted = true;
                     };
                     break;   
              case 12: 
                        JOptionPane.showMessageDialog(null,"对方还没有准备好");
                        break;
              case 11: {
                        JMessage.append("准备完毕,开始游戏\n你是地主,对方是农民\n");
                        JMessage.selectAll();
                        mp.initializemap();
                        mp.turn = true;
                        mp.flag = 0;    
                        isStarted = true;
                        break;
                       }
             case 2:   
                   mp.SendCardOut((DataCard)d);
                        break;
             case 21:   
                        mp.repaint();
                        break;             case 31:   JOptionPane.showMessageDialog(null,"你输了");
                        isStarted = false;
                        break;
             case 32:
                        JOptionPane.showMessageDialog(null,"你赢了");
                        isStarted = false;
                        break;
              case 4:  
                        bEnd = true;
                        JMessage.append("对方断开了连接!\n");
                        JMessage.selectAll();
                        initializeValue();
                        break;
              case 5: 
                        JMessage.append("对方说"+((Chattype)d).s+"\n");
                        JMessage.selectAll();
              default:
            }
          }while(!bEnd);

解决方案 »

  1.   

    在线等,如果不能执行repaint( )有什么其他方法么,真的着急啊………………大家帮看看…………
      

  2.   

    进入了case 21也没有调用repaint方法?你怎么确定的呢?我怀疑是你repaint后并没有改变什么,所以你看着像没有repaint一样
      

  3.   

       仔细看一下还是调用了repaint,现在有了新问题,比如想要操作的mp是对象A,另外一个对象是B,mp(类mainpanel的实例对象),这里mp指向了B,能不能有改变mp所指对象,即时mp指向A呢?