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.
Składnik klasy jako oddzielny wątek
- Rejestracja: dni
- Ostatnio: dni
- Postów: 11
0
- Rejestracja: dni
- Ostatnio: dni
- Postów: 560
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 ;)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Stacktrace
- Postów: 6823
2
- nie wywołuj metody
sleep. Są do tego znacznie lepsze rozwiązania np.Future SwingWorkerjako 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.