最近做一个文件传输的小项目,遇到这么个问题,在textarea中拖进来的文件的路径怎么显示,
网上找了N个代码,找了一个在文本框里能显示拖进来文件的内容的,却没找到能显示文件路径的,
其实代码改那么几行就可以,但是我还菜,不知道怎么改,
最终把两个程序代码合并起来,这样就可以显示拖进来文件的路径了,
废话不多说,直接上代码
import java.awt.BorderLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
import javax.swing.*;
class FileTransferHandler extends TransferHandler {
private JTextArea textarea;
public FileTransferHandler(JTextArea filePathList) {
this.textarea = filePathList;
}
public boolean importData(JComponent c, Transferable t) {
try {
List files = (List)t.getTransferData(DataFlavor.javaFileListFlavor);
//FileReader reader = new FileReader((File)files.get(0));
//textarea.read(reader, null);
Iterator iterator = files.iterator();
while(iterator.hasNext()){
File f = (File)iterator.next();
if (f.isFile()){
textarea.setText(f.getAbsolutePath());
}
else {
textarea.setText("不是标准文件");
}
}
//reader.close();
return true;
} catch (UnsupportedFlavorException ufe) {
ufe.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public boolean canImport(JComponent c, DataFlavor[] flavors) {
for (int i = 0; i < flavors.length; i++) {
if (DataFlavor.javaFileListFlavor.equals(flavors[i])) {
return true;
}
}
return false;
}
public static void main(String[] args) {
JTextArea textarea = new JTextArea(10, 20);
textarea.setTransferHandler(new FileTransferHandler(textarea));
JFrame f = new JFrame( "拖动文本文件到这个窗口里面 ");
f.getContentPane().add(new JScrollPane(textarea), BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
在jcreator里试过,可以哦,这个完事了,得继续做文件传输了。。go on