
文件拖拽识别是非常常用也非常实用的一个小功能
日常的应用如果需要操作到文件,每一次都用浏览文件来添加的话是非常麻烦的,而下面这种方法则可以用文件的拖拽来获取路径
主要是用到了DropTargetAdapter类,源代码如下:
import java.awt.event.*;
import java.awt.dnd.*;
import java.awt.datatransfer.*;
import javax.swing.*;
import java.util.*;
import java.io.File;
public class JavaFileDragDrop extends JFrame
{
JTextArea jta;
public JavaFileDragDrop()
{
this.setTitle("java file drag and drop test");
this.setBounds(150,150,300,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
jta=new JTextArea();
DropTargetAdapter kgd=new DropTargetAdapter()
{
public void drop(DropTargetDropEvent dtde)
{
try
{
Transferable tf=dtde.getTransferable();
if(tf.isDataFlavorSupported(DataFlavor.javaFileListFlavor))
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
List lt=(List)tf.getTransferData(DataFlavor.javaFileListFlavor);
Iterator itor=lt.iterator();
while(itor.hasNext())
{
File f=(File)itor.next();
jta.setText(jta.getText()+"n"+f.getAbsolutePath());
}
dtde.dropComplete(true);
}
else
{
dtde.rejectDrop();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
};
new DropTarget(jta,DnDConstants.ACTION_COPY_OR_MOVE,kgd);
jta.setBounds(30,30,250,250);
this.add(jta);
this.setVisible(true);
}
public static void main(String[] args)
{
new JavaFileDragDrop();
}
}
如果Copy请回复支持一下,谢谢!




近期评论