java 拖拽目录_Java 7:如何在Java中实现拖放?
我正在尝试使用
Java 7 Update 21进行拖放.
我的目标操作系统是:
> Windows 7
> Ubuntu 12.04
> Mac OSX 10.6 / 10.8
要求是:
>从文件系统拖动文件并将其放到我的Java应用程序(制作一个
将文件复制到临时目录) – >适用于Linux& MacOSX&视窗
拖动Thunderbird的电子邮件并将其放到我的Java应用程序(保存)
他们作为完整的* .eml文件在文件系统上)
以下代码适用于我的Windows,MacOSX和Ubuntu应用程序的简单文件.另一个要求是将Thunderbird的电子邮件删除到我的Java应用程序(邮件自动转换为* .eml文件并存储到磁盘).这也适用于Windows,但是我在Ubuntu和MacOSX中得到了一个“Data Flavor not supported exception”
编辑:我在Ubuntu上尝试使用OpenJDK 7,但是即使是正常的文件丢失也不起作用.只有使用JDK版本的Oracle.
有人有一个想法如何修复/实现吗?
提前谢谢了!
这是一个简单的可执行示例:
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.DropTargetDropEvent;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
public class DragDropTest extends javax.swing.JFrame {
public DragDropTest() {
initComponents();
initDragAndDrop();
}
private void initDragAndDrop() {
this.setDropTarget(new DropTarget(){
@Override
public synchronized void drop(DropTargetDropEvent dtde) {
try {
Transferable transfer = dtde.getTransferable();
if(transfer.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
List objects = (List)transfer.getTransferData(DataFlavor.javaFileListFlavor);
for(Object object : objects) {
if(object instanceof File) {
File source = (File)object;
File dest = new File(System.getProperty("user.home")+File.separator+source.getName());
Files.copy(Paths.get(source.getAbsolutePath()),Paths.get(dest.getAbsolutePath()),StandardCopyOption.REPLACE_EXISTING);
System.out.println("File copied from "+source.getAbsolutePath()+" to "+dest.getAbsolutePath());
}
}
} else if(transfer.isDataFlavorSupported(DataFlavor.stringFlavor)) {
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
String type = (String)transfer.getTransferData(DataFlavor.stringFlavor);
System.err.println("Data flavor not supported: "+type);
} else {
System.err.println("Data flavor not supported.");
}
} catch(UnsupportedFlavorException ex) {
System.err.println(ex.getMessage());
} catch(IOException ex) {
System.err.println(ex.getMessage());
} catch(Exception ex) {
System.err.println(ex.getMessage());
} finally {
dtde.dropComplete(true);
}
}
});
}
@SuppressWarnings("unchecked")
private void initComponents() {
setDefaultCloSEOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Drag & Drop");
setResizable(false);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,200,Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,Short.MAX_VALUE)
);
pack();
}
public static void main(String args[]) {
new DragDropTest().setVisible(true);
}
}
java 拖拽目录_Java 7:如何在Java中实现拖放?相关推荐
- java 拖拽生成_JAVA UI 拖拽功能
java GUI拖拽功能是很实用也相对高级一些的功能. 有一小部分的GUI控件支持 他们有dragEnabled属性.这些JComponent包括: javax.swing.JColorChooser ...
- Java拖拽控件数据库_java实现鼠标拖放功能代码实例
java实现鼠标拖放功能代码实例 利用鼠标的拖放来交换程序的数据,即所谓的鼠标拖放功能.鼠标的拖放功能在图形化系统中非常常用,Java 提供了java.awt.dnd 和java.awt.datatr ...
- java 如何级联删除_Java学习-040-级联删除目录中的文件、目录
之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...
- php 拖拽 上传文件 进度,在Vue中如何实现带进度条的文件拖动上传功能
这篇文章主要介绍了Vue实现带进度条的文件拖动上传功能,本文通过实例代码给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下 1. 基本界面 content="width=devic ...
- 如何在 JavaScript 中实现拖放
来源:http://www.javaeye.com/post/152142 译者说明: 终于完成了全文的翻译,由于时间比较参促,文章没有过多的校正与润色,阅读过程中难免会有些许生硬或不准确的感觉,请大 ...
- java 鼠标拖拽事件_Java实现鼠标拖拽移动界面组件
默认的,Frame或者JFrame自身已经实现了鼠标拖拽标题栏移动窗口的功能. 只是,当你不满意java的JFrame样式,隐藏了标题栏和边框,又或者干脆直接使用JWindow,那你又该怎么实现鼠标拖 ...
- java 拖拽上传_Java swing怎么实现上传文件并支持拖拽上传
展开全部 你这个复杂了,我稍微说说吧. 进度条稍微简单点,你就去看看Oracle的tutorial就行了,记得运用科学(或32313133353236313431303231363533e78988e ...
- Java 拖拽文件到文本框
Java中如何把文件拖拽到文本框呢? 先看一个例子: 核心代码: Java代码 /*** * 拖拽文件到文本框 * @param component */ public void drag ...
- Java拖拽排序工具类
package com.ciih.jwt.util.sort;import java.lang.reflect.Field; import java.util.Collections; import ...
最新文章
- POJ 2828 Buy Tickets | 线段树的喵用
- ARTS打卡计划第四周-ALGORITHM
- SSH免密登录详细操作步骤
- android摄像头代码,Android摄像头
- Notepad++如何编译、运行Java
- 斯坦福2019秋季课程:图机器学习资料全公开
- python程序设计课程设计二级减速器_二级减速器课程设计
- HDU - 4622 Reincarnation
- 倒酒(拓展欧几里得)
- html5谷歌地图,谷歌地图API和HTML 5
- 弹出停止U盘安全删除硬件的命令
- 拉伯证券|大股东或易主,阿里巴巴换股入局
- 关于抽象工厂模式的定义和实现
- MATLAB-7-程序流程控制
- Vue——props配置
- php ppt生成图片不显示,ppt图片在word中不能正常显示,只显示为矩形框的解决方法...
- 这五个资源网站真的是非常强大 请尽快收藏
- 浏览器Goole Chrome调试工具
- 学生管理系统(完整版)
- 前端开发规范:JavaScript 规范
热门文章
- CoreML的入门例子
- leetcode 617. Merge Two Binary Trees | 617. 合并二叉树(Java)
- 【Python爬虫】写个爬虫爬取自己的博客,可以刷访问量
- Hive体系结构(一)架构与基本组成
- width用计算机英语,计算机的英语词汇
- lda 可以处理中文_用python处理文本数据
- LongCache机制与Long等值比较\\\\Integer 中的缓存类IntegerCache
- Java单例模式优化写法
- hdu 4497 GCD and LCM
- 为什么不要使用长事务