最近研究了下javafx客户端人性化方面的,拖来拖去什么的最爱了,接下来给大家讲解下javafx怎么获取拖入的文件和将node里面的内容拖出为文件
1.获取拖入的文件
1 2 //build drag 3 txtAreaChangePane.setOnDragOver(new EventHandler<DragEvent>() { //node添加拖入文件事件 4 public void handle(DragEvent event) { 5 Dragboard dragboard = event.getDragboard(); 6 if (dragboard.hasFiles()) { 7 File file = dragboard.getFiles().get(0); 8 if (file.getAbsolutePath().endsWith(".java")) { //用来过滤拖入类型 9 event.acceptTransferModes(TransferMode.COPY);//接受拖入文件 10 } 11 } 12 13 } 14 }); 15 txtAreaChangePane.setOnDragDropped(new EventHandler<DragEvent>() { //拖入后松开鼠标触发的事件 16 public void handle(DragEvent event) { 17 // get drag enter file 18 Dragboard dragboard = event.getDragboard(); 19 if (event.isAccepted()) { 20 File file = dragboard.getFiles().get(0); //获取拖入的文件 21 22 } 23 } 24 });
2.拖出生成文件
1//drag out 2 ClipboardContent content = new ClipboardContent(); //用来放拖出的内容 3 txtAreaCodeSpace.setOnDragDetected(new EventHandler<MouseEvent>() { //在node里面拖动事件 4 public void handle(MouseEvent event) { 5 6 Dragboard dragboard = txtAreaCodeSpace.startDragAndDrop(TransferMode.ANY); //开启拖出事件 7 content.clear(); 8 File file = new File(txtClassName.getText() + ".java"); //创建拖出的文件 9 OutputStreamWriter outputString = null; 10 try { 11 file.createNewFile(); 12 outputString = new OutputStreamWriter(new FileOutputStream(file)); 13 outputString.write(txtAreaCodeSpace.getText()); 14 } catch (IOException e) { 15 e.printStackTrace(); 16 } finally { 17 try { 18 outputString.close(); 19 } catch (IOException e) { 20 e.printStackTrace(); 21 } 22 outputString = null; 23 } 24 List<File> files = new ArrayList<File>(); 25 files.add(file); 26 content.putFiles(files); //将文件保存到面板里面 27 dragboard.setContent(content); //放入拖出内容 28 29 } 30 });
就是这么简单,javafx封装的还是挺多的。