Witam, mam następujący problem z animacją w Javie. Otóż applet ma za zadanie wyświetlać poruszające się piłeczki (każda w innym kolorze) po obszarze, jednak ani jedna nie jest wyświetlona. Problem pewnie jest prosty, jednak jestem początkujący i wciąż nie wiem gdzie leży.
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
public class Animacja extends Applet implements Runnable {
private static final long serialVersionUID = -1777398265505319750L;
Thread watek;
Thread1 sterowanie;
Random a = new Random();
Timer time = new Timer();
public Animacja(){
}
public void init(){
watek = new Thread();
int t = a.nextInt(5);
sterowanie = new Thread1(t);
this.setBounds(0, 0, 500, 500);
}
public void start(){
if (watek == null) {
watek = new Thread1(5);
watek.start();
}
}
public void stop(){
if (watek != null){
watek = null;
}
}
public void paint(Graphics k, kulka z){
k.fillOval(z.polozenie.x, z.polozenie.y, 20, 20);
}
public void run() {
while(watek!=null){
sterowanie.run();
time.schedule(procedure(), 0, 20);
try {
Thread.sleep(3);
} catch(InterruptedException e){}
}
}
public static TimerTask procedure(){
Random h = new Random(2);
int z = h.nextInt();
Thread1 m = new Thread1(2);
if(z==0) {
m.run();
}
else m.interrupt();
return null;
}
}
//--------------------------------------------------------------
import java.util.Random;
public class Thread1 extends Thread {
Random k = new Random();
int n = 0;
int v = 0;
public Thread1(int n){this.n = n/2;}
public void run(){
for(int i=0; i<n; i++){
v = k.nextInt(2);
kulka h = new kulka();
h.run();
if (v==0) {
kulkasprezysta h1 = new kulkasprezysta();
h1.run();
}
else{
kulka h1 = new kulka();
h1.run();
}
}
}
}
//-----------------------------------------------------------------------
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
public class kulka implements Runnable {
Random l = new Random();
int r;
Punkt polozenie;
Color kolor;
wektor wek;
Color[] tab = {Color.red, Color.black, Color.blue, Color.green};
Graphics k;
public kulka(){
r = l.nextInt(4);
polozenie = new Punkt();
kolor = tab[r];
wek = new wektor();
}
public void rysuj(Graphics k){
k.fillOval(polozenie.x, polozenie.y , 20, 20);
k.setColor(kolor);
}
public void przesun(int minw, int maxw, int minh, int maxh){
if (polozenie.x>=maxw) polozenie.x=minw;
else if (polozenie.x<=minw) polozenie.x=maxw;
else if (polozenie.y>=maxh) polozenie.y=minh;
else if (polozenie.y<=minh) polozenie.y=maxh;
else {
polozenie.x+=wek.x;
polozenie.y+=wek.y;
}
}
public void run() {
for(; ;){
rysuj(k);
przesun(0, 500, 0 , 500);
rysuj(k);
}
}
}
//----------------------------------------------------------
public class kulkasprezysta extends kulka {
public kulkasprezysta(){
r = l.nextInt(4);
polozenie = new Punkt();
kolor = tab[r];
wek = new wektor();
}
public void przesun(int minw, int maxw, int minh, int maxh){
if (polozenie.x>=maxw) wek.x=-wek.x;
else if (polozenie.x<=minw) wek.x=-wek.x;
else if (polozenie.y>=maxh) wek.y=-wek.y;
else if (polozenie.y<=minh) wek.y=-wek.y;
else {
polozenie.x+=wek.x;
polozenie.y+=wek.y;
}
}
}
Z góry dziękuję za pomoc ;)