文件拖拽识别是非常常用也非常实用的一个小功能
日常的应用如果需要操作到文件,每一次都用浏览文件来添加的话是非常麻烦的,而下面这种方法则可以用文件的拖拽来获取路径
主要是用到了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请回复支持一下,谢谢!