Перемещение объекта — объектно-ориентированный — JAVA

#java #object

#java #объект

Вопрос:

Пытаюсь переместить объект влево от экрана, но не могу. Используя эти два класса (получил третий отдельный класс только для запуска программы).

 import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

import gu2.PaintWindow_GU2;
import paintpanel.Text;

public class Race {
//Instansvariabler
private PaintWindow_GU2 window;
private Car car1;
private Car car2;
private ImageIcon image = new ImageIcon("images/RacingTrack.png");
Random rand = new Random();
private int x;
private int x2;
Font font = new Font("SansSerif",Font.PLAIN,24);


//Konstruktor som använder sig av variablerna window, car1 och car2
public Race(PaintWindow_GU2 window,Car car1, Car car2){
this.window = window;
this.car1 = car1;
this.car2 = car2;


}

//Action-metosd för att starta racet
public void action(){
window.addIcon(image, 50, 50, true);
window.addIcon(car1.getImage(), car1.getX(), car1.getY(), true);
window.addIcon(car2.getImage(), 600, 205, true);
while(true){    
car1.moveTo(600-5, 165);    
window.setIconXY(car1.getImage(), car1.getX(), car1.getY());






}
}
}
import javax.swing.ImageIcon;

public class Car {
    private ImageIcon image;
    private int x;
    private int y;

    public Car(ImageIcon image) {
        this.image = image;
    }

    public ImageIcon getImage() {
        return image;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public void moveTo(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
 

Итак, мне не хватает некоторого кода в методе action, но я не уверен, как заставить объект переместиться влево.
Буду признателен за любую помощь, чтобы заставить объект переместиться влево.

Комментарии:

1. Я предлагаю вам добавить задачу в цикл событий для перемещения автомобиля один раз для каждого движения и разрешить потоку GUI обновлять отображение между действиями.

2. Есть хороший способ сделать это? Мне удалось переместить машину влево раньше, но она сразу вернулась в исходное положение.

3. ДА. Вы добавляете таймер, который перемещает его один раз при каждом вызове действия. Множество руководств о том, как делать анимацию.