Nie wyświetlanie się tekstu w JTextField-ach

0

Witam,
mam taki problem, tworzę sobie prostą aplikację do czasowników nieregularnych i napotkałem na dziwny problem. Problem jest w funkcji nastepny(). Chciałem wyświetlić w JTextField napisy np. na 1s a następnie automatycznie przejść dalej, czyli wszystko wyczyścić i od nowa.... Tylko że po napisaniu jak niżej i zrobieniu sleep(1000), program najpierw śpi i nie wyświetla :/

    public boolean nastepny() {
        if(jButton2.isEnabled()){
            /*Runnable w2 = new Watek();
            Thread watek2 = new Thread(w2);
            watek2.start();*/
            sprawdz();
            czekaj();
        }
        index++;
        if (indeksy.isEmpty()) {
            jLabel1.setText("Koniec");
            jButton1.setText("Losuj");
            jSlider1.setEnabled(true);
            jTextField4.setEnabled(true);
            this.aktywuj(false);
            dzialaj.serializuj();
            this.reset();
            return true;
        }
        if (index == indeksy.size()) {
            index = 0;
        }
        jLabel1.setText(dzialaj.getConcret(indeksy.get(index)).getEng1());
        jLabel2.setText(dzialaj.getConcret(indeksy.get(index)).getEng2());
        jLabel3.setText(dzialaj.getConcret(indeksy.get(index)).getEng3());
        jLabel4.setText(dzialaj.getConcret(indeksy.get(index)).getPol());
        this.reset();
        jButton2.setEnabled(true);
        return false;
    }
    public void czekaj(){
        try{
            Thread.sleep(5000);
        }catch(InterruptedException ex){
            System.out.println("Nie mozna zatrzymać programu");
        }
    }
    /*public class Watek implements Runnable{
        public void run(){
            sprawdz();
        }
    }*/

cały kod: http://ideone.com/b4vlxM

Tak wygląda przed kliknięciem jakiegokolwiek przycisku
04c8aecb73.png
A tak po wciśnięciu Sprawdź i chciałbym żeby tak wyglądał przez tą sekundę:
6fd232ddd2.png
po czym powrócił do wersji startowej

Aplikacja polega na wpisywaniu form czasowników. Jeśli wpiszemy wszystkie i klikniemy przycisk "Sprawdź" uruchomi on metodę sprawdz(). Metoda sprawdz(), jest odpowiedzialna za sprawdzenie poprawności wyniku, a jeśli jest błędny to wyświetlenie poprawnego. Przycisk "Następny" powoduje wyświetlenie kolejnego czasownika. Chciałbym zrobić to tak, żeby, jeśli ktoś nie kliknie przycisku "Sprawdź", tylko od razu po wpisaniu czasowników kliknie "Następny", przycisk ten zadziałał jak sprawdź, czyli sprawdził poprawność i np po 1s wyświetlił następny czasownik.
Niestety po tym co napisałem program czeka tę sekundę po czym wyświetla następne słowo.
Z moich obserwacji wynika, że program najpierw czeka (sleep) a następnie wykonuje sprawdzanie :/ a chciałbym to zrobić w odwrotny sposób.

0

To co zamieściłeś na ideone to nie jest cały kod. Brakuje klasy Działaj.
Usypianie jest kiepskim pomysłem. Wyświetl napisy i stwórz Timera, który je po sekundzie zmaże.

0

Najpierw radziłbym poczytać jak w ogóle działają wątki w Swingu.
Swing ma swój mechanizm do obsługi wątków: dopiero tam możesz tworzyć własne wątki czy też pule wątków.
W zaprezentowanym powyżej przykładzie wstrzymujesz główny wątek aplikacji czyli po prostu zamrażasz jej działanie.

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