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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算