在windows軟件中,不少軟件都提供了拖動文件的打開文件的功能,JavaFx中也是有這功能,是經過監聽器來實現的windows
setOnDragDetected(new EventHandler());
當你從一個Node上進行拖動的時候,會檢測到拖動操做,將會執行這個EventHandler。ui
setOnDragEntered(new EventHandler());
當你拖動到目標控件的時候,會執行這個事件回調。.net
setOnDragExited(new EventHandler());
當你拖動移出目標控件的時候,執行這個操做。code
setOnDragOver(new EventHandler());
當你拖動到目標上方的時候,會不停的執行。xml
setOnDragDropped(new EventHandler());
當你拖動到目標並鬆開鼠標的時候,執行這個DragDropped事件。blog
setOnDragDone(new EventHandler());
當你拖動並鬆手的時候,執行Drag完成操做。事件
我使用的是fxml綁定事件的方法,上面的setOnDragDropped
和setOnDragDone
,設置了方法,可是就是沒法執行,不知道是什麼緣由。我最後仍是使用了setOnDragExited
這個監聽器。get
咱們先經過fxml中設置監聽器。
能夠直接在scenebuilder中直接設置方法
或者再fxml文件中,寫上代碼onDragExited="#getFile"
,以後去建立getFile方法便可。it
@FXML void getFile(DragEvent event) { List<File> files = event.getDragboard().getFiles(); //得到文件 File file = files.get(0); //以後的相關操做,得到文件路徑等.. }
參考資料event