为什么不能拖拽文件 Java拖放文件到Swing窗口
Java拖放文件到Swing窗口
经过测试是没有问题的
代码
package 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
*/
// <editor fold defaultstate= collapsed desc= 生成的代码 >
private void initComponents() {
jScrollPane = new javax swing JScrollPane();
jTextArea = new MyTextArea();
setDefaultCloseOperation(javax swing WindowConstants EXIT_ON_CLOSE);
jTextArea setColumns( );
jTextArea setRows( );
jScrollPane setViewportView(jTextArea );
getContentPane() add(jScrollPane java awt BorderLayout CENTER);
pack();
}// </editor fold>
/**
* @param args
* the mand 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 = erator();
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 jScrollPane ;
private javax swing JTextArea jTextArea ;
// 变量声明结束
lishixinzhi/Article/program/Java/hx/201311/26318