Я хотел бы нарисовать несколько объектов на JPanel с паузой между каждой краской. Между каждым объектом также есть промежуток, который я просто вычисляю в цикле for.
Имея это в виду, я решил использовать java.util.Timer с пользовательским классом, расширяющим класс TimerTask (так как мне нужно, чтобы разрыв вычислялся динамически).
Дело в том, что когда я пытаюсь сделать это таким образом, ничего не отображается, но работает таймер, поскольку он отображает строку в журнале консоли. Хотя, когда я просто вызываю функцию в цикле for, объекты хорошо отображаются. Так что я не совсем понимаю, что я сделал не так.
Вот мой код:
public class GameScreen extends JPanel {
Turn turn;
public GameScreen(Turn t) {
super();
this.turn = t;
}
public void paintComponent(Graphics g){
this.setBackground(Color.decode("#ADCCDB"));
if(this.turn.boolAction) {
this.action(g, this.turn.listObjects);
}
}
public void action(Graphics g, ArrayList<Objects> listObject) {
class PaintTask extends TimerTask{
int i;
public PaintTask(int i){
super();
this.i = i;
}
@Override
public void run() {
System.out.println(new Date() + " Task Executed");
listObject.get(this.i).paint(g, 30, 30 + 60*this.i);
}
}
Timer timer = new Timer();
for(int i = 0; i < listObject.size(); i++) {
timer.schedule(new PaintTask(i), 1000, 3000);
}
/*for(int i = 0; i < listObject.size(); i++) {
action.get(i).paintHide(g, 30, 30 + 60*i);
}*/
}
}
Кто-нибудь знает, что здесь не так?
Заранее спасибо!