Thread.sleep() i button jak to rozwiązać ??

0

Siema, to mój pierwszy post i dopiero zaczynam zabawę z javą, ale jakoś sobie radzę. Chyba aż za dobrze bo cała moja grupa w szkole wyciąga ode mnie wszystkie programy zadane do domu, a potem idzie z gotowcem na zajęcia ;) Większość go przed zajęciami nawet nie kompiluje.

Postanowiłem stworzyć program pt: "Koniec dnia dziecka", który ma im trochę namącić w komputerach.
Na najbliższe zajęcia mamy przygotować grę w statki i chcę to wykorzystać.

Utworzyłem program z interfejsem, który na początku wyświetla takie okno gdzie użytkownik ustala rozmiar planszy:
user image

I teraz po kliknięciu przycisku gra ma się dziać taka akcja:

if(źródło == bWersy)
        {
            
            try {
                w = Integer.parseInt(tWersy.getText());
                k = Integer.parseInt(tKolumny.getText());
                if (w < 5 || w > 20 && k < 5 || k > 20)
                    lerr.setText("Gra musi mieć między 5-20 wierszy i kolumn. Spróbuj ponownie");
                else
                {    
                    lerr1.setFont(new Font("Arial", Font.BOLD, 34));
                    lerr1.setText("\u0043\u004F \u0054\u004F \u0044\u005A\u0049\u0045\u004E  \u0044\u005A\u0049\u0045\u0043\u004B\u0041 \u003F");
                    lerr2.setText("\u005A\u0057\u0049\u0045\u0043\u0048\u0041 \u005A\u0041\u003A");
                    tWersy.setVisible(false);
                    tKolumny.setVisible(false);
                    lWersy.setVisible(false);
                    lKolumny.setVisible(false);
                    bWersy.setVisible(false);
                
		//tutaj ma być takie niby odliczanie    
		for(int i=5; i>=0; i--)
		{
                        lCzas.setText(String.valueOf(i));
    			    try{
				Thread.currentThread().sleep(1000);
          			 }
           		  catch(ItrerruptedException ie){ }
		}

                }
                lCzas.setText("4");
            } catch (Exception ex){
                    lerr.setText("Wprowadź cyfry !");
            }

        }

I teraz problem w tym, że zamiast odliczać jest zwiecha, a po zakończeniu pętli od razu wynik. Trochę o tym czytałem, ale nie wiem co zrobić.
Wiem, że dzieje się tak dlatego, że akcja przycisku jest wyświetlana dopiero gdy zostanie zakończona.

Jak rozwiązać problem z odliczaniem ?
Z góry dzięki ?

0

Mysle, ze pomogla by Ci w tym klasa javax.swing.Timer, ktora mozesz wykorzystac do odmierzania czasu.

0

Zaraz spróbuję ;)

A teraz takie pytanie z serii atrakcje dla kolegów.
Ustawiłem czynność,która najpierw zawala cały pulpit okienkami, a potem wywołuje funkcję shutdown w cmd co zamyka system. ( W szkole komputery włączają się 20 min xD )

Chciałbym jeszcze w jakiś sposób zmienić tapetę na ich kompach poprzez program przed funkcją shutdown. Najlepiej jakby program importował ją sobie z internetu - ze wskazanego linku, bo nie będę mieć jak podrzucić .jpg razem z programem, żeby się nie kapnęli :P

1

Co do odliczania, to zazwyczaj jeżeli wykonujesz jakieś operacje w wątku głównym w pętli to będą one widoczne po jej zakończeniu, chyba że zrobisz to w oddzielnym wątku - co właśnie jest rozwiązaniem Twojego problemu.

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