No teraz ak zavolas repaint() tak sa spusti okrem ineho kod v update. Cize ak implementnes nejaky Listner, napriklad MouseListener, tak do nejakych pozicie ti moze nakreslit stvorec, alebo nieco ine. Alebo mozes urobit animaciu ako iny thread ze:
public class Grafika extends JFrame implements Runnable {
int x = 0,y = 100 ,w = 25,h = 25;
public static void main(String[] a){
grafika f = new grafika();
}
public Grafika(){
super("Animacia");
setSize(300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g) {
update(g);
}
@Override
public void update(Gaphics g){
g.setColor(Color.black);
g.fillRect(0, 0, 300, 300);
g.setColor(Color.white);
g.fillRect(this.x, this.y, this.w, this.h);
new Thread(this).start();
}
/**
* Posunie stvorec do polohy x,y a prekresli.
*/
public void moveRect(int x, int y){
this.x = x;
this.y = y;
repaint();
}
public void run(){
for(int i=0; i<100; i++){
moveRect((i*30)%300, 100);
try{
Thread.sleep(300);// Vlakno sa uspi na 300 ms
}
catch(InterruptedException ie){
break;
}
}
}
}