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
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
- nie wywołuj metody
sleep
. Są do tego znacznie lepsze rozwiązania np.Future
-
SwingWorker
jako menadżer wątków jest OK, ale należy poczytać jak on działa. - 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 :).