odświeżanie - zmiana koloru

0

Witam, tym razem mam problem z odświeżaniem (tak mi się wydaje). Otóż mam 5 JPaneli i chce żeby zmieniały swój kolor co 1 sekundę, jeden po drugim. Jak na razie utknąłem w momencie, że po wywołaniu całego zdarzenia, nie zmienia mi kolorów tych paneli, dopiero jak wywołanie się skończy zmienia kolory ostatniego ustawienia, czyli tak jak ma się skończyć. Po krótce nie widać pierwszych czterech zmian kolorów, jedynie ostatnią zmianę. I tutaj jest moje pytanie, co zrobić (dopisać) żeby było widać te wszystkie zmiany kolorów po kolei?
Dodam, że do wstrzymania programu na 2 sekundę używam funkcji Thread.sleep(1000);

0

To chyba oczywiste skoro chcesz zmieniać kolor w trakcie zdarzenia. Poczytaj jak wygląda przetwarzanie zdarzeń w Swingu! Tam jest jeden (!) wątek! W efekcie jak zatrzymasz ten wątek to całe UI będzie nieaktywne. Jeśli chcesz coś takiego zrobić jak opisałeś, to musisz wystartować sobie wątek który będzie zajmował sie malowaniem.

0

Zwykły timer (swingowy najlepiej) ustawiony co 2 sekundy, a w obsłudze jego wywołania zmieniasz kolor tylko jednego panela na raz i następnie wywołujesz repaint tego panela. Do oznaczenia paneli możesz użyć tablicy do której wpakujesz referencje tych paneli oraz jakąś zmienną identyfikującą indeks ostatnio zmienianego panela w tej tablicy. Z każdym wywołaniem zwiększasz indeks o 1 chyba, że dojdziesz do końca tablicy, wtedy go cofasz na początek.

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