文档章节

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

Fly的狐狸
 Fly的狐狸
发布于 2014/11/10 10:45
字数 331
阅读 557
收藏 6

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

本文转载自:http://blog.csdn.net/cico216/article/details/23713223

Fly的狐狸
粉丝 135
博文 20
码字总数 4807
作品 6
石景山
高级程序员
私信 提问
JavaFX WebView概述,很强大,内置了类似Electron的功能

来自 Murali Billa JavaFX技术人员的主要成员 在本博客中,我们将了解JavaFX如何呈现网页及其主要的组件 - 即WebView JavaFX是: 用于创建和交付桌面应用程序的软件平台,以及可以在各种设备...

GuoMengyue
2018/09/26
0
0
javafx官方文档学习之一Application与Stage,Scene初探

我的博文小站:http://www.xby1993.net,所有文章均为同步发布。 转载请注明作者,出处。 自jdk7u6之后javafx已经嵌入在jre之中 2 javafx UI设计工具JavaFX Scene Builder. Oracle支持的javaf...

xby1993
2013/12/08
0
0
JavaFX 架构与框架 (译)

原文地址:http://download.oracle.com/javafx/2.0/architecture/jfxpub-architecture.htm JavaFX 2.0平台是基于Java技术的富客户端平台。它使应用程序开发者更加容易的开发和部署跨平台的富...

Jeky
2011/10/09
0
26
开始学习JavaFX (译)

原文地址:http://download.oracle.com/javafx/2.0/get_started/jfxpub-get_started.htm 如果你想使用 JavaFX 快速创建拥有富客户体验的应用程序,那么这个文章正是为你准备的。你将学习如何...

Jeky
2011/10/10
6.7K
6
javafx webview 实现下载文件

我想从javafx 的webview 里面实现文件的下载,但是不知道怎样做。比如我在javafx中打开了一个网页https://www.baidu.com/s?f=8&rsv_bp=1&rsv_idx=1&word=mysql%E4%B8%8B%E8%BD%BD&tn=971246...

天高地厚宇宙无穷
2016/09/30
580
1

没有更多内容

加载失败,请刷新页面

加载更多

Node.js 多进程处理CPU密集任务

Node.js 单线程与多进程 大家都知道 Node.js 性能很高,是以异步事件驱动、非阻塞 I/O 而被广泛使用。但缺点也很明显,由于 Node.js 是单线程程序,如果长时间运算,会导致 CPU 不能及时释放...

Svend
39分钟前
3
0
Django笔记-3-模型-20190526

简介 django为各种数据库提供了很好的支持,django对这些数据库提供了统一的调用API;可以根据不同的也无需求选择不同的数据库; 配置数据库 在setting.py文件中配置数据库 DATABASES = { ...

Frank1126lin
55分钟前
3
0
OSChina 周日乱弹 —— 程序员做噩梦

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 手嶌葵《Kiss The Girl》 《Kiss The Girl》- 手嶌葵 手机党少年们想听歌,请使劲儿戳(这里) @Sharon啊 :今天...

小小编辑
今天
190
11
Another app is currently holding the yum lock; waiting for it to exit...

Another app is currently holding the yum lock; waiting for it to exit... The other application is: PackageKit Memory : 153 M RSS (266 MB VSZ) Started: Thu Jul 12 00:03......

圣洁之子
今天
2
0
FastDateFormat 研究

FastDateFormat 对缓存的利用,其实就是用ConcurrentHashMap 做了一个map类型的缓存 public F getInstance(final String pattern, TimeZone timeZone, Locale locale) { Validate......

暗中观察
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部