Wątki a GUI

0

Witam

Mój program podczas skomplikowanych kalkulacji "zamraża się" i nie wiem jak z tego wybrnąć. Czytałem tutoriale na temat wątków, ale dalej nie ogarniam jak to połączyć z GUI.
Zakładam że mam klasę GUI

public class GUI extends JFrame{

String tekst; 
JLabel wynik;

GUI () {
... jakis tam kod do stworzenia GUI
}
// gdzies tam po drodze robie sobie moje obliczenia i wrzucam wynik do JLabel

Obliczenia ob = new Obliczenia(); 
tekst=ob.metodaKtoraZacinaMiGUI(); 
wynik.setText(tekst);

public static void main(String[] args) {

GUI gui = new GUI();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setVisible(true);


}

}

i mam klasę obliczenia w ktorej jest metoda ktora jest wynikiem String

public class Obliczenia{

... jakis tam kod 
public String metodaKtoraZacinaMiGUI(){
// kod
}

}

Jak zrobić, aby nie zamrażało mi się okno podczas obliczeń?

0

Żeby interfejs działał płynnie to w Event Dispatch Thread trzeba wykonywać możliwie krótkie operacje. W innych wątkach niż EDT obliczasz jakieś tam dane, a będąc w EDT szybko aktualizujesz GUI (bo zmiana GUI spoza EDT to łamanie specyfikacji i nie ma gwarantowanego zachowania).

Poczytaj sobie: https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

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