新手-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日

悬赏问题

  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!
  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?