JAVA拖拽选择文件

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

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.io.File;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

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

      final JTextArea area = new JTextArea();
      area.setLineWrap(true);
      add(new JScrollPane(area));

      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.setText("");
                        for (File file : list)
                        {
                           area.append(file.getAbsolutePath());
                           area.append("\r\n");
                        }
                        // 指示拖拽操作已完成
                        dtde.dropComplete(true);
                     }
                     else
                     {
                        // 拒绝拖拽来的数据
                        dtde.rejectDrop();
                     }
                  }
                  catch (Exception e)
                  {
                     e.printStackTrace();
                  }
               }
            });

      setSize(300, 300);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setVisible(true);
   }

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

运行效果:

你可能感兴趣的:(java,拖拽,文件选择)