Java中如何把文件拖拽到文本框呢?
先看一个例子:
核心代码:
/***
* 拖拽文件到文本框
* @param component
*/
public void drag(final Component component)// 定义的拖拽方法
{
// panel表示要接受拖拽的控件
new DropTarget(component, DnDConstants.ACTION_COPY_OR_MOVE,
new DropTargetAdapter() {
@Override
public void drop(DropTargetDropEvent dtde)// 重写适配器的drop方法
{
try {
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))// 如果拖入的文件格式受支持
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);// 接收拖拽来的数据
List<File> list = (List<File>) (dtde
.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor));
// String temp = "";
// for (File file : list)
// temp += file.getAbsolutePath() + ";\n";
// JOptionPane.showMessageDialog(null, temp);
dragResponse(list,component);
dtde.dropComplete(true);// 指示拖拽操作已完成
} else {
dtde.rejectDrop();// 否则拒绝拖拽来的数据
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/***
* 默认实现
*/
@Override
protected void dragResponse(List<File> list,Component component) {
String filePath=list.get(0).getAbsolutePath();
if(component instanceof JTextComponent){
JTextComponent text=(JTextComponent)component;
//把文本框的内容设置为拖拽文件的全路径
text.setText(filePath);
}
}
调用:
项目采用maven 构建,项目结构:
项目源代码:见附件(divideFile.zip)
项目依赖的jar包见附件(io0007-find_progess-0.0.8.5-SNAPSHOT.jar)