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

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan