2015-10-23 43 views
1

目前我在主窗口中單擊按鈕時在JavaFX中顯示FileChooser彈出窗口。 FileChooser彈出窗口出現在屏幕的左上角。有沒有辦法將它置於屏幕中央?JavaFX - 中心文件選擇器彈出

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

據我所知,沒有。但是,如果在'showOpenDialog'中指定了非''''擁有者,那麼顯示文件選擇器的窗口將相對於所有者窗口進行適當定位。 –

回答

1

JavaFX不公開用於文件選擇器定位的API。

以下信息是Mac特定的,因爲我在Mac上進行了一些測試而不是Windows。 Windows的行爲會略有不同,但設置文件選擇器所有者的建議仍然存在。

在Mac上,當您設置文件選擇器的所有者時(我極力推薦),內部JavaFX實現使其成爲sheet。要設置filechooser的所有者,請將其傳遞給相應的顯示功能fileChooser.showOpenDialog(parentStage)。默認行爲是表單在應用程序標題欄上水平居中放置,並位於應用程序標題欄的正下方。當您拖動應用程序標題欄時,表單隨之移動。內部JavaFX實現不會通過Java實例公開公開sheet positioning API,因此無法更改文件選擇器工作表所在的位置。

我不推薦下一部分:現在,如果您沒有在showOpenDialog中指定所有者階段(例如,您只是通過null),那麼JavaFX Mac實現將在屏幕上水平居中創建一個無模式對話框,將100個(非視網膜,例如JavaFX座標類型)像素從屏幕的頂部向下定位。我不建議這樣做,但是因爲對話框不是窗口模式(如表單),並且根本不匹配應用程序窗口,例如,您可以將應用程序窗口移到前面並將其移動和屏幕周圍的文件對話框相互獨立。您也可以關閉應用程序窗口,文件對話框仍然可見。用戶必須單獨關閉文件選擇器對話框,這是一種錯誤行爲。