JavaFX - всплывающее окно выбора файла по центру

В настоящее время я отображаю всплывающее окно FileChooser в JavaFX при нажатии кнопки в главном окне. Всплывающее окно FileChooser появляется в верхнем левом углу экрана. Есть ли способ центрировать его на экране?

    FileChooser fileChooser = new FileChooser();
    File selectedFile = fileChooser.showOpenDialog(null);

person proskier15    schedule 23.10.2015    source источник
comment
Насколько я знаю, нет. Однако, если вы укажете владельца, отличного от null, в showOpenDialog, окно, показывающее средство выбора файлов, будет расположено соответствующим образом относительно окна владельца.   -  person James_D    schedule 23.10.2015


Ответы (1)


JavaFX не предоставляет API для позиционирования средства выбора файлов.

Следующая информация относится к Mac, поскольку я проводил некоторые тесты на Mac, а не на Windows. Windows будет вести себя немного по-другому, но рекомендация установить владельца файлового селектора в любом случае остается.

На Mac, когда вы устанавливаете владельца для средства выбора файла, что я настоятельно рекомендую, внутренняя реализация JavaFX делает его лист. Чтобы установить владельца средства выбора файлов, передайте его соответствующей функции show fileChooser.showOpenDialog(parentStage). Поведение по умолчанию заключается в том, что лист располагается горизонтально по центру строки заголовка приложения и располагается непосредственно под строкой заголовка приложения. Когда вы перетаскиваете строку заголовка приложения, лист перемещается вместе с ней. Внутренняя реализация JavaFX не раскрывает публично API позиционирования листа через экземпляр Java, поэтому нет возможности изменить расположение листа выбора файлов.

Следующая часть, которую я не рекомендую: теперь, если вы не укажете стадию владельца в showOpenDialog (например, вы просто передадите null), тогда реализация JavaFX Mac создаст немодальное диалоговое окно с горизонтальным центром на экране и позиционированием 100 (не -retina, например, тип координат JavaFX) пикселей вниз от верхней части экрана. Я не советую этого делать, так как тогда диалоговое окно не будет модальным окном (как лист) и вообще не совпадает с окном приложения, например, вы можете вывести окно приложения на передний план и переместить его и файловый диалог вокруг экрана независимы друг от друга. Также вы можете закрыть окно приложения, и диалоговое окно с файлом останется видимым. Пользователь должен отдельно закрыть диалоговое окно выбора файла, что является своего рода ошибкой.

person jewelsea    schedule 23.10.2015