Nie wyświetlanie się tekstu w JTextField-ach

Nie wyświetlanie się tekstu w JTextField-ach
M2
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 10 lat
  • Postów:1
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 :/

Kopiuj
    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.

edytowany 1x, ostatnio: misiek2709
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
DZ
  • Rejestracja:około 14 lat
  • Ostatnio:około 8 lat
  • Postów:76
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.

edytowany 1x, ostatnio: dzanesko

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.