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

Wesley13
• 阅读 946

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

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
小嫌 小嫌
3年前
Node.js学习笔记
什么是Node.js文件?Node.js文件包含将在特定事件上执行的任务一个典型的事件是有人试图访问服务器上的端口Node.js文件必须在服务器上启动才能生效Node.js文件的扩展名为“.js”Node.js文件应当如何执行推荐使用各种类型的编译器生成一个空白的nodedemo.js文件,在文件中输入下面的内容:varhttprequi
Wesley13 Wesley13
3年前
JavaFX打包工具(javafxpackager)
首先创建一个JavaFX文件,HelloWorldpackage test;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;impor
Stella981 Stella981
3年前
Ceph分布式存储部署过程
前言:  环境介绍:此次部署系统为Cenots7MON、OSD10.110.180.112AdminMON、OSD10.110.180.113Node1MON、OSD10.110.180.114Node2Ceph文件目录部署过程此部署过程是采用文件目录方式挂在激活OSD的方式部署Ceph集群。1.系统关闭
Wesley13 Wesley13
3年前
JAVA获取txt文件内容
  JAVA读取txt文件内容  通常,我们可以直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文件字符编码即可。1importjava.io.BufferedReader;2importjava.io.File;3importjava.io
Wesley13 Wesley13
3年前
thinkphp5 不用主机配置URL重写
可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考:\Apache\httpd.conf配置文件中加载了mod\_rewrite.so模块AllowOverrideNone将None改为All把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下<IfModulemod
Wesley13 Wesley13
3年前
.gitignore 规则写法
1\.在已忽略文件夹中不忽略指定文件夹/node_modules/!/node_modules/layer/2.在已忽略文件夹中不忽略指定文件/node_modules/!/node_modules/laye
Stella981 Stella981
3年前
CoreOS实践指南(八):Unit文件详解
在系列前面的内容里,我们已经介绍了使用Unit文件配置Systemd管理的系统服务的方式,以及CoreOS的Fleet工具继承并扩展了这种文件格式,使得它更加适用于集群环境的服务配置。由于Unit文件本身包罗万象,且属于相对进阶的内容,在系列前面的部分的文章中,都并没有很详细的讲解Unit文件具体的格式和可用的参数。而事实上,这部分的
Stella981 Stella981
3年前
Linux stat函数和stat命令
stat函数和stat命令linux文件里的【inodeindexnode】解释:要理解inode必须了解磁盘和【目录项】,inode实际是连接【目录项】和磁盘的中间物质。图里的大圈代表硬件的磁盘,里面的小圈代表某个文件存储在磁盘上了。【inodeindexnode】的node(承载node信息的结
liam liam
1年前
Node.js实现文件夹遍历的常用方法
在开发中,经常需要对文件系统进行操作,包括遍历文件夹以获取文件列表。本文将讨论使用Node.js遍历文件夹的几种常用方法,并通过一个实际案例来演示如何实现。基本概念在开始之前,让我们了解一些基本的概念:文件系统模块(fs模块):Node.js提供了内置的f