Wątki applet

0

Witam... staram się ogólnie zrozumieć wątki...jednak no mam problem aby podłączyć wątek do appletu...

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class kwadrat extends Applet {

	static Applet applet;
	public void init() {
		applet=this;
		applet.setSize(800,600);
		applet.setBackground(Color.CYAN);
		applet.setVisible(true);
		ruchomy r = new ruchomy();
		r.start();
	}
	
	public void paint(Graphics g)
	{
		g.setColor(Color.BLACK);
		g.fillRect(10, 10, 100, 100);
	}

}

To jest klasa główna

Wątek:

public class ruchomy extends kwadrat implements Runnable {
	int kierunek=1;
	int poz1=0;
	int poz2=0;
	int licznik=0;

	public ruchomy() {
		Thread ruch = new Thread();
		ruch.start();
	}

	@Override
	public void run() {
		
		switch(kierunek)
		{
		case 1:
			licznik++;
			poz1++;
			if(licznik==300)
			{
				licznik=0;
				kierunek=2;
			}
			break;
		case 2:
			licznik++;
			poz2++;
			if(licznik==300)
			{
				licznik=0;
				kierunek=3;
			}
			break;
		case 3:
			licznik++;
			poz1--;
			if(licznik==300)
			{
				licznik=0;
				kierunek=4;
			}
			break;
		case 4:
			licznik++;
			poz2--;
			if(licznik==300)
			{
				licznik=0;
				kierunek=1;
			}
			break;
		}
		
		
		kwadrat.applet.repaint();
	}

}

Sęk w tym, że nawet nie drgnie :/ Proszę o pomoc i wytłumaczenie. Koniecznie chodzi mi właśnie o te wątki aby je zrozumień no i aby były one rozdzielone na pliki.

0

Bo robisz to nie tak :p Jeśli już koniecznie to musi być w tak zawiłej formie, to:

// w konstruktorze
Thread t = new Thread(this);
t.start();
0

Zmieniłem lecz nadal nie działa... nom zawiła zawiła ale wykładowca tak wymaga mają być wątki w osobnych plikach i klasa główna....

0

Zmieniłem też troszkę metodę paint bo zauważyłem, że zapomniałem o jednej rzeczy:

public void paint(Graphics g)
	{
		g.setColor(Color.BLACK);
		g.fillRect(r.poz1, r.poz2, 100, 100);
	}

Ale nadal się kwadrat nie chce ruszać...:/

0

Pokaż cały kod w aktualnej wersji :p

0

Bardzo dziwna konstrukcja i dziwne dziedziczenia

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
 
public class kwadrat extends Applet{
    ruchomy r;
    public void init(){
        setBackground(Color.CYAN);
        r = new ruchomy(this);
    }
 
    public void paint(Graphics g)
    {
        g.setColor(Color.BLACK);
        if(r != null)
            g.fillRect(r.poz1, r.poz2, 100, 100);
    }
}
public class ruchomy implements Runnable {
    int kierunek=1;
    int poz1=0;
    int poz2=0;
    int licznik=0;
    kwadrat kw;
 
    public ruchomy(kwadrat kw) {
        this.kw = kw;
        Thread ruch = new Thread(this);
        ruch.start();
    }
 
    @Override
    public void run() {
        while(true)
        {
                switch(kierunek)
                {
                case 1:
                        licznik++;
                        poz1++;
                        if(licznik==300)
                        {
                                licznik=0;
                                kierunek=2;
                        }
                        break;
                case 2:
                        licznik++;
                        poz2++;
                        if(licznik==300)
                        {
                                licznik=0;
                                kierunek=3;
                        }
                        break;
                case 3:
                        licznik++;
                        poz1--;
                        if(licznik==300)
                        {
                                licznik=0;
                                kierunek=4;
                        }
                        break;
                case 4:
                        licznik++;
                        poz2--;
                        if(licznik==300)
                        {
                                licznik=0;
                                kierunek=1;
                        }
                        break;
                }
 
 
                kw.repaint();
        }
    }
}
0

skasuj
r.start();
a pod
r = new ruchomy(this)
wpisz
Thread nth = new Thread(r);
nth.start();
powinno dzialac ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1