javafx实现拖人文件到node,将node里面的内容为文件保存

最近研究了下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封装的还是挺多的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值