目前,在主窗口中单击按钮时,我在JavaFX中显示FileChooser弹出窗口。 FileChooser弹出窗口显示在屏幕的左上角。有没有办法让它在屏幕中居中?
FileChooser fileChooser = new FileChooser();
File selectedFile = fileChooser.showOpenDialog(null);
答案 0 :(得分:2)
JavaFX不公开用于文件选择器定位的API。
以下信息是Mac特定的,因为我在Mac而不是Windows上进行了一些测试。 Windows的行为略有不同,但无论如何,建议设置文件选择器的所有者仍然存在。
在Mac上,当您设置文件选择器的所有者时,我强烈建议,内部JavaFX实现使其成为sheet。要设置filechooser的所有者,请将其传递给相应的show function fileChooser.showOpenDialog(parentStage)
。默认行为是工作表在应用程序标题栏上水平居中放置,并位于应用程序标题栏的正下方。当您拖动应用程序标题栏时,工作表随之移动。内部JavaFX实现不会通过Java实例公开公开sheet positioning API,因此无法更改文件选择器表的位置。
下一部分我不建议:现在,如果你没有在showOpenDialog中指定所有者阶段(例如你只是传递null
),那么JavaFX Mac实现将创建一个无模式对话框在屏幕上水平居中,并从屏幕顶部向下定位100(非视网膜,例如,JavaFX坐标类型)像素。我不建议这样做,因为那时对话框不是窗口模式(就像工作表一样)并且根本不与应用程序窗口完全匹配,例如,你可以将应用程序窗口带到前面并移动它和屏幕周围的文件对话框彼此独立。您也可以关闭应用程序窗口,文件对话框仍然可见。用户必须单独关闭文件选择器对话框,这是一种有缺陷的行为。