Błąd - Not on FX application thread

0

Witam.
Myślałem że to rutynowa funkcja ale coś się sypie. Mam kod

Timer timer = new Timer(1000, new ActionListener(){
									@Override
									public void actionPerformed(ActionEvent arg0) {
										Label label = tester.getTimeLabel();
										label.setText("Przykładowy tekst");
										tester.setTimeLabel(label);				
									}
									
								});

I zamiast zmieniać Label co sekundę, wyrzuca mi błąd przy funkcji label.setText()
Not on FX application thread; currentThread = AWT-EventQueue-0
Ktoś ma pomysły jak to naprawic?

EDIT
Działający, poprawiony kod :

MainController tester = new MainController();
								Timer timer = new Timer(1000, new ActionListener(){
									@Override
									public void actionPerformed(ActionEvent arg0) {
										Platform.runLater(new Runnable() {
											
											public void run() {
												tester.setTimeLabelText("Przykładowy tekst");
											}
											
										});
									}
									
								});
0

Co to za Timer?

Zmiany w GUI musisz odpalać w Dispatch Thread. Możesz to łatwo osiągnąć korzystając z Platform.runLater

0

Platform.runLater() gdzie wpisać?

1

W tym miejscu w którym modyfikujesz kontrolki działające pod kontrolą wątku od gui JavaFX. W twoim wypadku jest to ustawianie tekstu w label.

label.setText("Przykładowy tekst");

Ja bym odpowiedzialność za zmiane tekstu przerzucił do klasy zmiennej tester, tworząc metodę np. setTextTimeLabel(String text)

Podejrzewam że kod poniżej jest nie potrzebny, chyba że metoda setTimeLabel robi coś więcej niż przypisanie labela do zmiennej.

tester.setTimeLabel(label); 
1
VanDavv napisał(a):

Platform.runLater() gdzie wpisać?

Zamiast:
jakieś instrukcje zmieniające stan GUI;
zrób:

Platform.runLater(new Runnable() {
  void run() {
    jakieś instrukcje zmieniające stan GUI;
  }
});
0

Dziękuję wszystkim za pomoc ;) Kolejny raz pozytywnie jestem zaskoczony ludźmi, którzy tak chętnie pomagają - Wami. Działający kod wrzucam jako edit pierwszego posta ;)

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