Thread.sleep () останавливает мою краску?

Я делаю программу, которая пытается анимировать карту, перемещающуюся по экрану, как если бы вы на самом деле вытащили ее со стола. Вот код для анимации:

public void move(int x, int y) {
    int curX = this.x; //the entire class extends rectangle
    int curY = this.y;

    // animate the movement to place
    for (int i = curX; i > x; i--) {
        this.x = i;
    }

    this.x = x;
    this.y = y;
}

этот прямоугольный объект находится внутри панели внутри jframe. для перекраски панели, у меня есть это:

public void run() {
    while (Core.isRunning()) {
        gamePanel.repaint(); //panel in which my rectangle object is in

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

это поток, перерисовывающий gamePanel каждые 50 миллисекунд.

Теперь я понимаю, что, возможно, это не лучший способ сделать подобные вещи. если есть лучший способ сделать все это перекрасить, пожалуйста, сообщите мне!

Но проблема у меня в том, когда я звонюmove() Команда для моего прямоугольника проходит через поток, но изображение не обновляется до конца, так что это просто прыжок из точки А в конечное местоположение.

почему это происходит? Кто-нибудь может критиковать / улучшать мой код? Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос