Не пытайтесь отложить реальную картину. Компонент должен быть окрашен, когда его просят нарисовать.
Вместо этого используйте свой таймер для изменения какого-либо состояния в MovingObjects
. В вашем случае вы хотите изменить состояние x
, y
, width
и height
. Когда ваш таймер срабатывает, увеличивайте эти значения и вызывайте repaint()
.
Тогда в вашем методе paintComponents
вы просто используете эти значения для рисования компонента
public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.drawOval(x,y,width,height);
g.fillOval(x,y,width,height);
}
Редактировать
Не уверен, с чем у вас проблемы, но вызвать repaint () несложно:
ActionListener taskPerformer=new ActionListener() {
public void actionPerformed(ActionEvent ae) {
x++;
y++;
width++;
height++;
repaint();
}
};
new Timer(100,taskPerformer).start();