新手-99 2023-03-22 11:31 采纳率: 79.3%
浏览 31
已结题

java调用repaint()方法,不会自动刷新

在尝试做一个贪吃蛇游戏,在做到蛇的移动的时候,需要一直不停地绘制蛇的最新位置,

窗口的lunch方法:

 public void lunch(){
        GameWin gw = new GameWin();
        //窗口是否可见
        gw.setVisible(true);
        //设置窗口的大小
        gw.setSize(600,600);
        //设置窗口的位置在屏幕中央
        gw.setLocationRelativeTo(null);
        //设置窗口的标题
        gw.setTitle("贪吃蛇");

        //添加while循环,使得蛇不停运动
        while(true){

            repaint();

            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }


绘制:
```java
 public void paint(Graphics g) {
        //绘制灰色背景
        g.setColor(Color.gray);
        //绘制矩形
        g.fillRect(0,0,600,600);
        //绘制网格,网格颜色和背景色不一样
        g.setColor(Color.BLACK);
        for (int i = 0; i < 20; i++) {
            //横线
            g.drawLine(0,i * 30,600,i * 30);
            //竖线
            g.drawLine(i * 30,0,i * 30,600);
        }

        //绘制蛇头
        ho.paintSelf(g);
    }

ho.paintSelf()方法:


```java
 public void paintSelf(Graphics g) {
        move();
        super.paintSelf(g);

    }

    //控制蛇移动的方法
    public void move(){
        //先对蛇头的方向判断
        switch (direction) {
            case "up" -> y -= height;
            case "down" -> y += height;
            case "left" -> x -= width;
            case "right" -> x += width;
            default -> {
            }
        }
    }

但是运行起来时,蛇不会自己移动,只有不停地使窗口最小化和切换到前台才能看到蛇在动,不点击蛇就不会动。请问哪里出问题了?

img

示意图gif

img

  • 写回答

2条回答 默认 最新

  • 成都渔民 2023-03-22 13:00
    关注

    没有其他部分的代码,只能猜,试试 gw.repaint(); 或者 gw.Invalidate() .

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 3月22日

悬赏问题

  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器