Watki, a obiekt Canvas

0

Witam,
chciałem napisać prostę grę w bilard opartą na wątkach.
Do tego celu napisałem wątek służący do wyświetlania planszy, który jest odświeżany co 5 ms. Tak wygląda run():

Swiat swiat = new Swiat(kij);
		while(true){
			try{
				Thread.sleep(5);
			}catch(InterruptedException exc){
				System.out.println("Wystąpił bład");
				break;
			}
			okno.getContentPane().add(swiat, BorderLayout.CENTER);
		}

Obiekt swiat zawiera Canvas z narysowaną planszą i bilami, zaś okno to obiekt okna.
Gdy uruchomię program z kodem takim jak powyżej, wówczas plansza do gry pojawia się, ale szybko "miga".
Gdy jednak usunę usypianie wątku:

Swiat swiat = new Swiat(kij);
while(true){

			okno.getContentPane().add(swiat, BorderLayout.CENTER);
		}

Plansza nie chce się narysować, choć wiem, że wątek działa, ponieważ na samej górze okna mam przyciski i one "migoczą".
Co zrobić, aby plansza rysowała się i nie było widać efektu "migotania"?
Pozdrawiam

0

Co do pierwszego fragmentu kodu: IMO co 5milisekund dokładasz ten sam canvas na okno, dlatego Ci migocze.

0

@up
To może zamiast odświeżać obiekt Canvas'a to będę odświeżał jego zawartość?

EDIT:
Użyłem metody repaint():

Swiat swiat = new Swiat(kij);
okno.getContentPane().add(swiat, BorderLayout.CENTER);
	while(true){
		swiat.repaint();
	}

Ale teraz elementy Canvas'a mi migoczą :(

0

Dodaj jeszcze sleepa do pętli

0

@up
nadal migoczą, chyba że sleep() dam na >0,5 :(

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.