@Talik0507
Работаю, Живу

Как побороть Not on FX application thread Java FX?

Суть вопроса: Как правильно организовать работу приложения (Желательно с примерами) ?

Есть контроллер формы1, на форме есть элементы: Label, TextArea, ProgressIndicator
Есть класс с логикой.
В классе три метода, каждый выполняет длительные действия.
Каждый метод не может выполнятся раньше его предшественника, т.е. для корректной работы нужно соблюдать порядок выполнения метод1, метод2, метод3

Задача: Для Каждого метода должен отрабатывать свой индикатор
В Поле TextArea должен выводится какой-то пояснительный текст (не суть важно, просто текст)
Label должен изменяться в процессе работы (по результатам отработки методов) (отображает количество данных)

Пробовал организовать по совету из статьи www.cyberforum.ru/java-gui-javafx/thread1594963.html

Так как методы длительного выполнения, создаю задание:
Service thread = new Service() {
@Override
protected Task createTask() {
return new Task() {
@Override
protected Integer call() throws Exception {
класс.метод 1
.......

с обновлением TextArea проблем нет. Но вот если пытаюсь еще обновлять Label получаю java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4

в какую сторону копать? Подскажите, как корректно организовываются подобные приложения?
Java FX и Java только изучаю.
  • Вопрос задан
  • 4863 просмотра
Пригласить эксперта
Ответы на вопрос 1
timych
@timych
Вызовите метод сдедующим образом:
Platform.runLater(new Runnable() {

				@Override
				public void run() {
					runMyMethod();
				}
			});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы