Я хотел бы знать, как лучше всего показать dialog(Stage)
до того, как вызывается метод основного приложения init
. Я не могу реализовать его в методе init, потому что он не запускается в потоке приложений JavaFX и, реализуя его в методе start, я бы потерял возможность предварительного загрузчика (который существует только на этапе инициализации, если я его понял правильно).Диалоговое окно javafx show перед init
Это должно быть что-то вроде выбора рабочего пространства в затмении или выбора каталога в светлой комнате.
Решение, о котором я могу думать, создает две программы, один стартер и основное приложение, но я бы предпочел, чтобы это произошло в одном приложении. Если это можно сделать только таким образом, Как начать основной app.jar с той же версией Java, что и стартер? (Он не должен вызываться с версией Java, установленной в пути, поскольку командная строка/терминал позволяет запускать приложения с другой версией).
Спасибо за ваш совет.
Почему вы должны сделать это? Метод init() 'является частью инициализации жизненного цикла приложения FX: вы вряд ли можете ожидать выполнения части вашего приложения до его завершения. Почему бы просто не показать диалог в методе 'start()', как обычно, а затем, когда диалог будет уволен, выполните всю необходимую обработку перед отображением основного окна приложения? –
@James_D Я хотел бы сделать это, потому что код, занимающий достаточно времени для предварительного загрузчика/заставки, появляется после выбора пользователя и, насколько я понимаю, жизненный цикл preloaders во время 'init()' метода, таким образом, пользователь может подождите несколько секунд, прежде чем появится основное приложение Stage, не увидев индикатор выполнения. Это означает, что мне не нужен предварительный загрузчик и не открывайте диалоговое окно с оформлением меньше, чем прогресс, указывающий на экран заставки в методе 'start()', пока не будет отображаться основная сцена. – Scourge
Итак, вы можете просто использовать механизм предварительного натяжения.Хотя проще (imo) показать заставку с индикатором выполнения из метода 'start()', делать то, что вы делаете, что занимает столько времени в задании в фоновом потоке и показывать главный экран, когда это будет завершено , –