qq_36855446 2016-11-28 14:47 采纳率: 0%
浏览 1628

repaint方法无效,paintComponent方法未被调用

刚学Java,菜鸟都算不上……在做一个2048的小游戏,然后加上一个超简易AI的时候就出BUG了……求解答
@Override
public void keyPressed(KeyEvent e) {
// TODO 反射
coreControl.AI();
switch (e.getKeyCode()) {
case KeyEvent.VK_UP: coreControl.keyUp(); break;
case KeyEvent.VK_DOWN: coreControl.keyDown(); break;
case KeyEvent.VK_LEFT: coreControl.keyLeft(); break;
case KeyEvent.VK_RIGHT: coreControl.keyRight(); break;
case KeyEvent.VK_W: coreControl.keyW();break;
case KeyEvent.VK_A: coreControl.AI();break;
default: break;
}
}

    然后AI() 是这么写的
    public void AI() {
    while (!Img.isLost) {                           
        if(!Img.isLost) {
            keyRight();
            System.out.println("Right");
        }
        if(!Img.isLost) {               
            keyDown();   
            System.out.println("Down");
        }
        if(!Img.isLost) {
            System.out.println("Left");
            keyLeft();              
        }
        if(!Img.isLost) {
            System.out.println("Up");
            keyUp();                
        }
    }
}
    可以看到,两段代码实际上调用的是同一套方法
    结果按键操作时可以正常刷新。而当按下A键,调用AI时,窗口就不会刷新了,经过排除,发现是调用repaint时出现问题。repaint没有调用我重写的paintComponent方法。
    最神奇的时,当我把AI()放在AI()所在的类的构造器中,由程序自动调用,然后就可以正常跑了……
    这是正常运行图片,分数正常刷新
    ![图片说明](https://img-ask.csdn.net/upload/201611/28/1480344496_620052.png)
    然后这个是不正常的,分数一直停留在初始的0,经测试,paintComponent方法从未被调用
    ![图片说明](https://img-ask.csdn.net/upload/201611/28/1480344536_213789.png)
  • 写回答

1条回答 默认 最新

  • devmiao 2016-11-28 15:55
    关注
    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集