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 构建,项目结构: