当前位置: 首页 > news >正文

java swing 拖拽文件夹_Java Swing 鼠标拖放文件 代码1

参考了http://www.javaworld.com/javaworld/javatips/jw-javatip97.html

自己改写了一下用于简单的实现文件拖入,红色的部分为比较关键的代码,

主要是用netbeans生成的。

经过测试是没有问题的。

代码:

/*

* NewJFrame.java

*

* Created on 2008年2月2日, 上午11:06

*/

package yyplayer;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.Transferable;

import java.awt.datatransfer.UnsupportedFlavorException;

import java.awt.dnd.DnDConstants;

import java.awt.dnd.DropTarget;

import java.awt.dnd.DropTargetDragEvent;

import java.awt.dnd.DropTargetDropEvent;

import java.awt.dnd.DropTargetEvent;

import java.awt.dnd.DropTargetListener;

import java.io.File;

import java.io.IOException;

import java.util.Iterator;

import java.util.List;

import javax.swing.JTextArea;

/**

*

* @author Administrator

*/

public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */

public NewJFrame() {

initComponents();

}

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

//

private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();

jTextArea1 = new MyTextArea();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTextArea1.setColumns(20);

jTextArea1.setRows(5);

jScrollPane1.setViewportView(jTextArea1);

getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

pack();

}//

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new NewJFrame().setVisible(true);

}

});

}

class MyTextArea extends JTextArea implements DropTargetListener{

public MyTextArea(){

new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this);

}

public void dragEnter(DropTargetDragEvent dtde) {

}

public void dragOver(DropTargetDragEvent dtde) {

}

public void dropActionChanged(DropTargetDragEvent dtde) {

}

public void dragExit(DropTargetEvent dte) {

}

public void drop(DropTargetDropEvent dtde) {

try {

Transferable tr = dtde.getTransferable();

if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {

dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);

System.out.println("file cp");

List list = (List) (dtde.getTransferable()

.getTransferData(DataFlavor.javaFileListFlavor));

Iterator iterator = list.iterator();

while (iterator.hasNext()) {

File f = (File) iterator.next();

this.setText(f.getAbsolutePath());

}

dtde.dropComplete(true);

this.updateUI();

}else {

dtde.rejectDrop();

}

} catch (IOException ioe) {

ioe.printStackTrace();

} catch (UnsupportedFlavorException ufe) {

ufe.printStackTrace();

}

}

}

// 变量声明 - 不进行修改

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTextArea jTextArea1;

// 变量声明结束

}

相关文章:

  • java treemap 降序排序_Java TreeMap 升序|降序排列
  • java 流关闭顺序_JAVA的节点流和处理流以及流的关闭顺序
  • java 多层结构故障_多层构架在实践中一些问题
  • java项目提高安全性_Java线程安全与程序性能
  • mysql 获取真是执行计划_Oracle 从缓存里面查找真实的执行计划
  • mysql 越文_mysql数据库乱码之保存越南文乱码解决方法_MySQL
  • java发布_java项目发布的方式
  • python分享的代码怎么写_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
  • android js调用java_如何在Android平台上使用JS直接调用Java方法
  • python实现并发和并行的方式有哪些_Python中的并行和并发是什么
  • java a a=null_面试题((A)null).fun()——java中null值的强转
  • java获取hashcode_java identityHashCode 和 hashCode
  • django mysql 加锁_Django数据库事务和死锁
  • 二叉树某结点的路径java_java二叉树和为某一个值的路径如何实现?思路分享
  • java清空JTextArea文本内容_java – 如何在JTextArea中更改文本的位置
  • 【译】JS基础算法脚本:字符串结尾
  • JS 中的深拷贝与浅拷贝
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 0x05 Python数据分析,Anaconda八斩刀
  • Babel配置的不完全指南
  • flask接收请求并推入栈
  • flutter的key在widget list的作用以及必要性
  • Go 语言编译器的 //go: 详解
  • java 多线程基础, 我觉得还是有必要看看的
  • Java到底能干嘛?
  • java正则表式的使用
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • mysql_config not found
  • React Native移动开发实战-3-实现页面间的数据传递
  • ubuntu 下nginx安装 并支持https协议
  • 爱情 北京女病人
  • 基于游标的分页接口实现
  • 前端面试之闭包
  • 入手阿里云新服务器的部署NODE
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 微信小程序:实现悬浮返回和分享按钮
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # .NET Framework中使用命名管道进行进程间通信
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $().each和$.each的区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (MATLAB)第五章-矩阵运算
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)SpringBoot3---尚硅谷总结
  • (一)u-boot-nand.bin的下载
  • (转)德国人的记事本
  • (转载)OpenStack Hacker养成指南
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .Net - 类的介绍