java如何实现将文件拖入文本框中并在其显示路径
先看结果
代码
代码
.
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.TransferHandler;
public class test {
public static void main(String[] args) throws Exception, IOException{
JFrame frame=new JFrame("将文件拖入文本框中并显示路径");
frame.setBounds(600, 300, 600, 300);//设置大小和位置
JTextField p1= new JTextField(26);
p1.setText("可以将文件拖入该窗口,或者点击右边的浏览 -->");
JButton b1=new JButton("浏览");
//拖入文件
p1.setTransferHandler(new TransferHandler()
{
public boolean importData(JComponent comp, Transferable t) {
try {
Object o = t.getTransferData(DataFlavor.javaFileListFlavor);
String filepath = o.toString();
if (filepath.startsWith("[")) {
filepath = filepath.substring(1);
}
if (filepath.endsWith("]")) {
filepath = filepath.substring(0, filepath.length() - 1);
}
p1.setText(filepath);
return true;
}
catch (Exception e) {
}
return false;
}
@Override
public boolean canImport(JComponent comp, DataFlavor[] flavors) {
for (int i = 0; i < flavors.length; i++) {
if (DataFlavor.javaFileListFlavor.equals(flavors[i])) {
return true;
}
}
return false;
}
});
//按钮浏览
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fc2 = new JFileChooser("./");
fc2.showOpenDialog(b1);
String lu =fc2.getSelectedFile().getAbsolutePath();
p1.setText(lu);
}
});
frame.setLayout(null);//没有布置可以用这个设计
p1.setBounds(50,100,450,30);
b1.setBounds(510,100,60,30);//设置组件大小和位置
frame.add(p1);
frame.add(b1);//加入组件
frame.setVisible(true);//显示
frame.setResizable(false);//固定大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//可以关闭窗口
}
}