Witam, mam w Javafx problem związany z komunikatem:
Not on FX application thread; currentThread = Timer-0
Dzieje się to dlatego, iż w wątku cyklicznie wywoływanym przez Timer chcę dodać do javafxowego Pane jeden Node.
PassengerUI passenger = new PassengerUI(action.Passenger());
Group node = passenger.node();
getChildren().add(node);
rozumiem niebezpieczeństwo kolizji na danych, a w Internecie znalazłem rozwiązanie:
//klasa wewnętrzna klasy extends Pane
private class PassengerEnteredHandler extends Thread implements SimpleActionListener<PassengerEnterAction>
{
//wątek został stworzony, gdyż dodanie dziecka z wątku timera zgłasza błąd. Dlaczego?
@Override
public void run()
{
PassengerUI passenger = new PassengerUI(action.Passenger());
Group node = passenger.node();
getChildren().add(node);
}
private PassengerEnterAction action;
@Override
public void onComplete(PassengerEnterAction action)
{
//listener odpalony przez wątek timera
this.action = action;
Platform.runLater(this);
}
};
Pytam więc, czy jest jakieś sprytniejsze rozwiązanie umożliwiające zapis do getChildren() z wątku timera. Jeśli nie ma, to czy jest możliwe interwałowe odpalanie jakiejś funkcji na zasadzie setInterval(cośtam, 1000) na jednym wątku Javafxowego GUI??