基本思路:
- 创建一个类extends TransferHandler,重写importData方法,方法内可获得被拖拽的文件,同时重写canImport方法,返回true
- 创建一个JTextArea,调用setTransferHandler方法,把上面类的对象传进去
实例代码:
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.File;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.TransferHandler;
class FileTransferHandler extends TransferHandler {
@Override
public boolean importData(JComponent comp, Transferable t) {
// TODO Auto-generated method stub
try {
List<File> list = (List<File>) t
.getTransferData(DataFlavor.javaFileListFlavor);
for (File f : list) {
System.out.println(f.getAbsolutePath());
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
@Override
public boolean canImport(TransferSupport support) {
// TODO Auto-generated method stub
return true;
}
}
public class Handler {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new JFrame();
frame.setLocation(300, 400);
frame.setSize(300, 200);
JTextArea area = new JTextArea("drag");
area.setTransferHandler(new FileTransferHandler());
frame.add(area);
frame.setVisible(true);
}
}