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