DropDragSupportTextArea.java
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.FileInputStream;
import java.io.IOException;
import java.util.List;
import javax.swing.JTextArea;
/**
*
* @author Administrator
*/
public class DropDragSupportTextArea extends JTextArea implements DropTargetListener{
private DropTarget dropTarget;
public DropDragSupportTextArea() {
//注册DropTarget,并将它与组件相连,处理哪个组件的相连
//即连通组件(第一个this)和Listener(第二个this)
dropTarget = new DropTarget(this,DnDConstants.ACTION_COPY_OR_MOVE, this, true);
}
/**
* 拖入文件或字符串,这里只说明能拖拽,并未打开文件并显示到文本区域中
*/
@SuppressWarnings("static-access")
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) {
}
}
DropDragu.java
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DropTargetDragEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class DropDragu extends DropDragSupportTextArea{
public void dragEnter(DropTargetDragEvent dtde) {
DataFlavor[] dataFlavors = dtde.getCurrentDataFlavors();
if(dataFlavors[0].match(DataFlavor.javaFileListFlavor)){
try {
Transferable tr = dtde.getTransferable();
Object obj = tr.getTransferData(DataFlavor.javaFileListFlavor);
List<File> files = (List<File>)obj;
for(int i = 0; i < files.size(); i++){
append("文件名称:"+files.get(i).getName()+"\r\n");
append("文件位置:"+files.get(i).getAbsolutePath()+"\r\n");
File file = new File(files.get(i).getAbsolutePath());
FileInputStream fis = null;
try{
fis = new FileInputStream(file);
append("文件大小::"+String.valueOf(fis.available()/1024)+"k"+"\r\n");
}catch(IOException e1){
System.out.println("文件异常!");
}
append("======================"+"\r\n");
append("执行拆包操作开始,以10M为拆分单位,wait..."+"\r\n");
try {
UnpackTest ut = new UnpackTest();
ut.filesplit(files.get(i).getAbsolutePath(),10485760);
} catch (Exception e) {
e.printStackTrace();
}
append("执行拆包操作成功!文件共计拆分:"+Math.ceil(fis.available()/10485760.0)+"个"+"\r\n");
append("======================"+"\r\n");
}
} catch (UnsupportedFlavorException ex) {
} catch (IOException ex) {
}
}
}
}
DropDragDemo.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
/**
*
* @author Xu
* 实现Swing文件拖拽 ,文件组拆的功能
*/
public class DropDragDemo extends JFrame{
public DropDragDemo(){
JFrame frame = new JFrame("文件拆包");
frame.setSize(500, 400); //设置窗口大小
frame.setResizable(false); //窗口不可改变大小
frame.setLocationRelativeTo(null); //窗口显示在屏幕中央
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createTitledBorder("文件拆包工具"));
DropDragu textArea = new DropDragu(); //执行操作的对象
JScrollPane jsp = new JScrollPane();
jsp.setViewportView(textArea);
textArea.setColumns(40);
textArea.setRows(20);
panel.add(jsp);
frame.add(panel);
frame.setVisible(true);
}
public static void main(String[] args){
new DropDragDemo();
}
}