Not on fx application thread

Not on fx application thread

ниже фрагментов кода дает мне ошибку Not on FX application thread; currentThread = JavaFX Application Thread .Это приложение отлично работало в java 1.7, но когда я переместил его в fx8, он теперь дает ошибку. когда я запускаю приложение с моей 1-й попытки, оно работает по назначению .Но после закрытия сцены и открытия ее снова она не работает.

ошибка также неоднозначна Not On fx application thread and current thread- javafx application thread .Что это означало, не в потоке приложения fx, если текущий поток является потоком приложения fx.

6 ответов

Это произошло со мной, когда я изменял элемент UI из задачи в javafx 2, как элементы listview.Задача, Которая Изменяет График Сцены помог мне решить проблему, т. е. обновить элементы пользовательского интерфейса по

Platform.setImplicitExit(false); решить мою проблему. Я думаю, что они изменили реализацию в JavaFX 8, поэтому тот же код, который работает без каких-либо проблем в JavaFX 2, дает не поток приложений fx есть ошибки.

это должно произойти, когда вы пытаетесь изменить некоторый компонент UI, например текст метки. Запуск, как это работает всегда:

Вы можете изменить форму или перейти к другому представлению или fxml с этим в любой части вашего кода:

мой пример в моем контроллере:

Это не показано явно в коде выше, но я уверен, что происходит то, что где-то вы создаете поток вне потока приложения (main) javafx, а затем пытаетесь выполнить операции над объектами javafx (например, закрытие, открытие окон и т. д.) на второй нить. Это строго запрещено, так как только основной поток может напрямую управлять объектами javafx. Если это становится требованием вашей программы, вам нужно использовать второй поток для других такие вещи, как вычисления и т. д. Вы должны использовать некоторую форму передачи сообщений, чтобы другой поток знал, что вы хотите сделать любое действие javafx.

Читайте также:  Айпад тормозит в интернете

Below code snippets is giving me error Not on FX application thread; currentThread = JavaFX Application Thread .This application was working fine in java 1.7 but when i moved it to fx8 it is now giving error. when I start the application on my 1st attempt it is working as intended .But after closing the stage and opening it again it is not working.

The error is also ambiguous Not On fx application thread and current thread- javafx application thread .What did it mean by not on fx application thread if the current thread is a fx application thread.

7 Answers 7

will fix it, too.

This happened with me when i was modifying UI element from task in javafx 2 like listview elements.A Task Which Modifies The Scene Graph helped me to solve the issue i.e. updating UI elements by

It should happens when you try to change some component UI, like a label text. Running like that works always:

Platform.setImplicitExit(false); solved my problem. I think they changed the implementation in JavaFX 8, so the same code that works without any issue in JavaFX 2 gives the not an fx application thread error there.

You can change of Form or go to another view or fxml with this in any part of your code :

My Example in my Controller :

It’s not shown explicitly in the code above, but what I’m fairly sure is happening is that somewhere you are creating a thread outside of the application (main) javafx thread, and then you are trying to preform operations on javafx objects (like closing, opening windows, etc.) on the SECOND thread. This is strictly not allowed, as only the main thread can control javafx objects directly. If this becomes a requirement of your program that you need to use the second thread for other things like computations, etc, etc. You must use some form of message passing to let the other thread know that you want to do whatever javafx action.

Читайте также:  Arduino uno r3 робот

I experienced the same problem while trying to add a splash screen for my program. This is how my code was

Running this gave a ‘not on fx application’. By adding Platform.runLater() inside my task, that solved the issue. Now, this is how I currently have my code:

I hope this will help you solve the problem. Cheers.

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

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

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

Так как методы длительного выполнения, создаю задание:
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 только изучаю.

Ссылка на основную публикацию
Mysql вывести последнюю запись
Это пример кода для выбора всех записей из таблицы. Может ли кто-нибудь показать мне, как выбрать последнюю запись этой таблицы?...
M3u8 чем открыть на андроид
вкл. 13 Август 2018 . Опубликовано в Менеджеры закачек M3U8 Loader - Программа скачает видео в несколько потоков. Для того...
M2040dn печатает белые листы
Сделаем качество печати Kyocera как по заводу В блоге я уже неоднократно говорил о своей любви к печатным аппаратам японской...
Mysql query error select distinct
I keep running into the same error, using MySQL. The totaal value is marked as wrong, but i have no...
Adblock detector