Składnik klasy jako oddzielny wątek

0

Witam.
Mam klasę która jako składnik posiada obiekt klasy X dziedziczący po JFrame. Obiekt ten odpowiada za wyświetlanie animowanego gifu jako tła. Moim celem jest rozdzielenie tła od reszty programu, gdyż wywołuję metodę sleep, a to powoduje że tło również zostaje uśpione. Próbowałem w klasie X implementować interfejs Runnable i w funkcji run wywoływać metodę repaint(), ale nic to nie daje.

0

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html

Edit: ok komentarz Koziołka sprowadził mnie na ziemię :P

Nie używaj sleepa, tylko SwingWorkera, taki był pomysł na zarządzanie tym. robisz to co potrzebujesz w DoInBackground na done sobie updateujesz to co Ci potrzebne a tło jest odświeżane niezależnie. Najlepiej w oddzielnej klasie. I ze swingworkera mozesz wyciągnąć jakąś wartość po obliczeniach :)

pzdr

Edit2: ale lepiej słuchaj Koziołka z postu niżej, punktów nie bez kozery ma tyle ;)

2
  1. nie wywołuj metody sleep. Są do tego znacznie lepsze rozwiązania np. Future
  2. SwingWorker jako menadżer wątków jest OK, ale należy poczytać jak on działa.
  3. Dobrym rozwiązaniem może być utworzenie całkowinie nowego i niezaleznego komponentu "ZAnimomawnymTłem", który będzie posiadać wewnętrzny wątek (zarządzany przez SwingWorkera) do obsługi animacji. Aplikacja będzie widziała ten komponent jak każdy inny i będzie odseparowana od jego zachowania.
0

O takie coś mi chodziło. Dziękuję za pomoc :).

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