Java Swing动画暂停并恢复

Java Swing动画暂停并恢复,java,swing,animation,game-loop,Java,Swing,Animation,Game Loop,我想增加暂停/恢复游戏的可能性。不幸的是,我的解决方案只会暂停游戏,但不会继续游戏(当我单击“恢复”按钮时,什么也没有发生-图像仍处于静止状态)。我还尝试在线程上调用wait/notify方法,但它也不起作用-我在线程“AWT-EventQueue-0”java.lang.IllegalMonitorStateException中得到了异常。暂停/恢复的最佳解决方案是什么 游戏循环 public void run() { init(); long startTime;

我想增加暂停/恢复游戏的可能性。不幸的是,我的解决方案只会暂停游戏,但不会继续游戏(当我单击“恢复”按钮时,什么也没有发生-图像仍处于静止状态)。我还尝试在
线程上调用wait/notify方法,但它也不起作用-我在线程“AWT-EventQueue-0”java.lang.IllegalMonitorStateException中得到了
异常。暂停/恢复的最佳解决方案是什么

游戏循环

public void run() {
    init();

    long startTime;
    long reTime;
    long waitTime;

    while (running) {
        startTime = System.nanoTime();
        int CarPosX = car.zwrocPolozenieX();
        int CarPosY = car.zwrocPolozenieY();
        update(b, CarPosX, CarPosY);
        render(b);
        //draw();
        repaint();


        if(b<4390) {
            b=b+szybkoscMapy;
        }

        reTime = System.nanoTime() - startTime;
        waitTime = targetTime - reTime/100000000;
        try {
            Thread.sleep(waitTime);
        }
        catch(Exception e) {

        }
    }
}

public void init() {
    if(thread == null) {
        thread = new Thread(this);
        thread.start();
    }
    b=0;
    running = true;
    image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
    g = (Graphics2D) image.getGraphics();


    map = new Map(levelNumber);
    car = new Car(map);
    car.setxpos(338);
    car.setypos(150);

}
用于调整动画的速度。将检查调用计时器的
start()
stop()
方法的典型控件。如果有兴趣,也可以使用这种
计时器。

用于调整动画的速度。将检查调用计时器的
start()
stop()
方法的典型控件。如果有兴趣,也可以使用这种
计时器

    pause_button.addActionListener( new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            bp.running = false;
        }
    });

resume_button.addActionListener( new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            bp.running = true;
        }
    });