Открытие нового окна из отдельного потока

204
06 марта 2022, 07:30

У меня есть "параллельный" поток, класс расширяемый с помощью Task<Void>. В методе call() есть вызов нового объекта, который должен открыть новое диалоговое окно.

Но этого не происходит. Проследовав по стеку с помощью отладчика, увидел что процесс проваливается в исключение

Никаких ошибок при этом нет, выполнение точно такого же метода в одном потоке работает исправно.

Подскажите, почему так может происходить ? Как из Task вызывать новые (модальные) окна.

Answer 1

Всё изменение графического интерфейса (в том числе открытие окон) должно выполняться в потоке FX приложения. Любые изменения графического интерфейса в других потоках вызывают исключения java.lang.IllegalStateException: Not on FX application thread.

Если в отдельном потоке нужно сделать открытие окна, нужно делать это через Platform.runLater:

Platform.runLater(() -> {
    какие-то действия;
});
READ ALSO
XStream, сериализовать Null поля в пустые теги

XStream, сериализовать Null поля в пустые теги

Есть простой пример генерации XML с помощью XStream 14

86
Вывод целого числа из строки

Вывод целого числа из строки

Как вывести первое встречающееся целое число и следующую за ним буквуНапример ‘а6hdkfh54a’ выводит ‘6h’

128
Что можно закастить в SortedSet?

Что можно закастить в SortedSet?

Никак не могу понять, что еще можно отлить в SortedSetПерепробовал несколько типов коллекций

68
После сортировки выводит не тот элемент, который нужен

После сортировки выводит не тот элемент, который нужен

В дополнении к вопросу Что можно закастить в SortedSet?, нашел решение, но выдает другую ошибку! Почему, не могу понять

146