java awt实现拖拉式文件路径获取

package com.example.drag;

import java.awt.GridLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;

/**
 * 文件拖拽选择示例
 *
 * @author jianggujin
 */
@SuppressWarnings("serial")
public class DragDemo extends JFrame {

    public DragDemo() {
        super("DragDemo");

        final JTextArea area = new JTextArea();
        area.setLineWrap(true);
        JScrollPane jScrollPane = new JScrollPane(area);
        jScrollPane.setSize(200, 200);
        JFrame jf = new JFrame("中国通关查询接口");          // 创建窗口
        jf.add(jScrollPane);

        //add(jScrollPane);

        JPanel panel3 = new JPanel();                // 创建面板容器,使用默认的布局管理器
        // 创建一个按钮,点击后获取文本框中的文本
        JButton btn = new JButton("清除");
        //btn.setFont(new Font(null, Font.PLAIN, 20));
        panel3.add(btn);
        jf.add(panel3);

        new DropTarget(area, DnDConstants.ACTION_COPY_OR_MOVE,
                new DropTargetAdapter() {
                    @Override
                    public void drop(DropTargetDropEvent dtde) {
                        try {
                            // 如果拖入的文件格式受支持
                            if (dtde
                                    .isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                                // 接收拖拽来的数据
                                dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                                @SuppressWarnings("unchecked")
                                List<File> list = (List<File>) (dtde.getTransferable()
                                        .getTransferData(DataFlavor.javaFileListFlavor));
                                //area.append("");
                                for (File file : list) {
                                    area.append(file.getAbsolutePath());
                                    area.append("\r\n");
                                }
                                // 指示拖拽操作已完成
                                dtde.dropComplete(true);
                            } else {
                                // 拒绝拖拽来的数据
                                dtde.rejectDrop();
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }

                });

        jf.setSize(500, 350);                       // 设置窗口大小
        jf.setLocationRelativeTo(null);             // 把窗口位置设置到屏幕中心
        jf.setLayout(new GridLayout(4, 10));
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 当点击窗口的关闭按钮时退出程序(没有这一句,程序不会退出)
        jf.setVisible(true);

        //监听按钮
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String text = area.getText();
                String[] split = text.split("\r\n");
                for (String s : split) {
                    System.out.println("path is " + s);
                }
                area.setText("");
            }
        });

    }

    public static void main(String[] args) {
        new DragDemo();
    }
}

awt 选择文件的方式是使用文件选择框,但是这种方式在操作起来很麻烦,很多人在操作的时候喜欢直接使用鼠标拖拽,今天就为大家演示一下JAVA中如何实现直接用鼠标拖拽文件选择。

基本思想是:
将文件或文件夹拖拽到聊天对话框后,
释放鼠标激活drop事件后,
可以得到被选择的文件或文件夹的信息,
以便进行数据的传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yann.bai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值