很多软件都有这个功能,小弟不知道怎么在java中实现,谢谢!

解决方案 »

  1.   

    应该还要用到操作系统的API, 关注一下~~
      

  2.   

    java在这方面是垃圾,你不用去实现了有很多经典的东西在java中都没有,你最好还是用其他的语言实现
      

  3.   

    谁说实现不了import java.awt.BorderLayout;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;import javax.swing.*;public class FileTransferHandler extends TransferHandler {
        private JList filePathList;    public FileTransferHandler(JList filePathList) {
           this.filePathList = filePathList;
        }    public boolean importData(JComponent c, Transferable t) {
            try {
             List files = (List)t.getTransferData(DataFlavor.javaFileListFlavor);
             addFilesToFilePathList(files);
             return true;
            } catch (UnsupportedFlavorException ufe) {
             ufe.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
            return false;
        }    public boolean canImport(JComponent c, DataFlavor[] flavors) {
          for (int i = 0; i < flavors.length; i++) {
            if (DataFlavor.javaFileListFlavor.equals(flavors[i])) {
                return true;
            }
          }
          return false;
        }    private void addFilesToFilePathList(List files)
    {
         DefaultListModel model = new DefaultListModel();
         for (Iterator iter = files.iterator(); iter.hasNext();) {
    File file = (File) iter.next();
    model.addElement(file.getPath());
    }
         this.filePathList.setModel(model);
    }
        
        public static void main(String[] args)
    {
         JList filePathList = new JList();
         filePathList.setTransferHandler(new FileTransferHandler(filePathList));
        
    JFrame f = new JFrame("拖动文件到这个窗口里面");
    f.getContentPane().add(new JScrollPane(filePathList), BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }
      

  4.   

    另外反过来的拖放也可以实现,下面这个程序中的filechooser中的文件就可以拖动到桌面或者是资源管理器或者任何其他接受文件拖放的程序里。import javax.swing.JFileChooser;public class T {
    public static void main(String[] args) {
    JFileChooser filechooser = new JFileChooser();
    filechooser.setDragEnabled(true);
    filechooser.showOpenDialog(null);
    }
    }具体的实现可以参考 javax.swing.plaf.basic.BasicFileChooserUI.java 文件中的FileTransferHandler和FileTransferable内部类。