Zmiana wartosci JTextField podczas wykonywania funkcji.

0

Witam.
Mam taki maly problem:
w pierwszym pliku mam klase, ktora tworzy JFrame z obrazkami, przyciskami itp, jest w nim tez pole JTextField, po nacisnieciu jednego przycisku, ktory ma rozwiazywac zadanie tworzy sie instancja klasy, ktora caly algorytm implementuje (klasa ta jest w innym pliku) i wywoluje funkcje, ktora ma szukac rozwiazanie. W tej funkcji sa 2 petle i chcialbym, zeby po kazdym okrazeniu zmienila sie wartosc wypisywana w JTextField, ktore jest w tamtej klasie "bazowej".

Przykladowy kod, oczywiscie mocno uproszczony:

public class Frame extends JFrame{
jakies zmienne;
private JTextField wiadomosc;

main(){
       new algorytm = new Algorytm();
       algorytm.start();
}
}

public class Algorytm{
       jakies zmienne,
       konstruktor itp;
       int numer = 0;

       public void start(){
                for(int i=0; i < 10; i++){
                          numer += 1;
                          cos sie dzieje;
                }
        }
}

No i wlasnie chcialbym, zeby podczas wykonywania sie tej funkcji "start" wraz ze zmiana wartosci "numer" zmienial sie tez tekst tego JTextField "wiadomosc", zeby wyswietlal "numer".

Mam nadzieje, ze nie zamotalem zbytnio.
0

ee czy ja dobrze rozumiem ?
wiadomosc.setText(numer + "");

0

No wlasnie nie, chodzi o to, ze ta klasa z algorytmem jest w innym pliku, niz ta klasa z JFrame'em, wiec to nie wchodzi w gre.

0

powinno to wyglądać mniej więcej tak:

public class Frame extends JFrame{
jakies zmienne;
private JTextField wiadomosc;

main(){
       new algorytm = new Algorytm(this); // ten wiersz winien byc w konstruktorze klasy Frame 
                                                            // a nie w metodzie main()
       algorytm.start();
}
public setWiadomosc(String msg)
{
    wiadomosc.setText(msg);
}
}

public class Algorytm(Frame fr){
       jakies zmienne,
       Frame fr;
       konstruktor itp;
       int numer = 0;
       public Algorytm(Frame fr)
       {
             this.fr=fr;
       }

       public void start(){
                for(int i=0; i < 10; i++){
                          numer += 1;
                          cos sie dzieje;
                }
                fr.setWiadomosc("coś się wydarzyło");
        }
}

ale prawdopodobnie pole tekstowe się nie odświeży, być może algorytm musi być w nowym wątku

0

Mhm czyli jednak musze przekazywac tego JFrame'a, nic, wielkie dzieki!

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