Java拖放文件到Swing窗口的方法

精贴 置顶
1415 0

  经过测试是没有问题的。

  代码:


 package com.test.ui;
  import java.awt.datatransfer.DataFlavor;
  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;
  public class DragFile extends javax.swing.JFrame {
  public DragFile() {
  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 DragFile().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);
  List list = (List) (dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
  Iterator iterator = list.iterator();
  while (iterator.hasNext()) {
  File f = (File) iterator.next();
  this.append(f.getAbsolutePath() + "\n");
  }
  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;
  // 变量声明结束
  }

 

  • 没有任何评论
今日天气 ···

···

···

···

热门排行
CSS cursor鼠标样式一览表 2012-06-25
.NET后台写JS代码 2011-11-03
网站地址多出jdfwkey的问题解析及... 2010-08-25
数据库xxx的日志已满,请备份该数... 2013-07-19
百度、google、Yahoo网站地图制作... 2011-01-30
<a>标签的伪类书写顺序问题... 2010-09-04
什么是长尾关键词? 2010-09-24
CEO名言 2010-08-31
Mysql 主从数据库同步 2010-09-12
用ASP实现网页BBS 2010-11-01
博主推荐
本个人博客微信公众平台上线啦~~... 2013-10-13
饼哥网络互联上线啦~~要买域名空... 2013-09-20
网站title标题如何正确修改不会被... 2013-08-26
饼哥通讯录系统上线啦,欢迎大家... 2013-08-24
ASP .NET MYSQL 的简单分页 并不... 2013-08-19
网站有弹窗广告这样的站点,百度... 2013-08-17
做淘宝SEO优化需要注意的8大问题 2013-08-17
淘宝网怎么做SEO优化 2013-08-17
站长们要学习的“苍井空精神” 2013-08-17
苹果公司今日发布了iOS 7第五个开... 2013-08-07
随便看看
VS快捷键大全 2010-08-25
.NET中如何获取客户端浏览器,系统... 2013-07-13
操作系统常见问题:操作系统启动... 2010-09-07
个人博客增加反向链接的35个技巧 2010-08-30
下面这段代码输出什么?为什么? 2010-11-29
获取Android系统的唯一识别码 2013-06-27
百度、google、Yahoo网站地图制作... 2011-01-30
url是否需要尽量静态化 2010-09-07
js实现复制网页文章事自动加入版... 2010-11-22
电脑的140个技巧 2010-08-31
RSS新闻
传媒新闻
CSDN
八卦新闻
女性新闻
台湾新闻
互联网
军事-新浪博客
IT-新浪博客
汽车新闻
游戏新闻
国际新闻
国内新闻
体育新闻
我的微博
北京 上海 杭州 深圳 广州 成都