Я написал собственный класс JavaFX, расширяющий Dialog в java fx. Хотя я называю это методом show() из внешнего класса, он должен, как и ожидалось, показывать этап диалога сверху. Это происходит, однако, хотя в диалоговом окне Ubuntu появляется поверх другого главного окна, в Windows он автоматически идет позади. Что вызывает эту разницу? Есть ли способ заставить его работать на обеих платформах? Я уже попробовал requestFocus() и toFront(), все еще не работая.Пользовательский диалог JavaFX скрывается за основным окном
- EDIT -
Кажется, что это работает, как это даже с помощью простого оповещения. Я забыл упомянуть, что я развиваюсь в клипе e (fx) (может быть, это какая-то ошибка здесь?). Я не могу отправить весь код здесь прямо сейчас, но дает простой пример, это что-то вроде этого:
// Example button action code:
Alert alert = new Alert(AlertType.INFORMATION);
alert.show();
Это все. Запуск в Ubuntu - работает как шарм, запускается в Windows, главное окно Eclipse - это кража фокуса. Единственное, что сработало, это добавить focusListener, в котором - после обнаружения фонового потерянного события он запрашивает фокус с помощью requestFocus(), и сразу после этого он снова обращается к фокусу в Platform.runLater(). Это выглядит не так хорошо (появляется, скрывается, появляется снова), и это небезопасно. Я думаю (как я могу быть уверен, что runLater всегда будет делать то, что я хочу, и когда)
К сожалению, это все еще скрывается только на Windows, –
@KrzysiekKucharski Ok, вы можете разместить пример с этой проблемой? Я не могу воспроизвести это прямо сейчас. – eldrior
Yup, я редактировал мой главный вопрос. –