您的位置:首页 > 编程语言 > Java开发

java 在jtextarea(文本框)里显示拖动进来文件的路径

2015-09-20 19:55 656 查看
来自:junjin456963的专栏

最近做一个文件传输的小项目,遇到这么个问题,在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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: