今天玩QQ邮箱发现了这个功能,在我看来确实有点技术含量的,还没去研究,也暂时没想到其如何实现,大家也来猜猜如何?
看看有没感兴趣挑战的高人并写个demo出来供大家学习学习啊(偶自认水平还不到家,估计这个任务完成不了了,呵)

解决方案 »

  1.   

    这是个本地实现文件拖拽得到路径的桌面程序 加到applet中即可以下程序转自http://www.cn-java.com/www1/?uid-73457-action-viewspace-itemid-6350import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.awt.dnd.DnDConstants;
    import java.awt.dnd.DropTarget;
    import java.awt.dnd.DropTargetDragEvent;
    import java.awt.dnd.DropTargetDropEvent;
    import java.awt.dnd.DropTargetEvent;
    import java.awt.dnd.DropTargetListener;
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    import javax.swing.JTextArea;/**
    *
    * @author Administrator
    */
    public class NewJFrame. extends javax.swing.JFrame. {
        
        /** Creates new form. NewJFrame. */
        public NewJFrame() {
            initComponents();
        }
        
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form. Editor.
         */
        // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          
        private void initComponents() {
            jScrollPane1 = new javax.swing.JScrollPane();
            jTextArea1 = new MyTextArea();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jTextArea1.setColumns(20);
            jTextArea1.setRows(5);
            jScrollPane1.setViewportView(jTextArea1);        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);        pack();
        }// </editor-fold>                        
        
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new NewJFrame().setVisible(true);
                }
            });
        }
        
        class MyTextArea extends JTextArea implements DropTargetListener{
            public MyTextArea(){
                new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this);
            }
            public void dragEnter(DropTargetDragEvent dtde) {
            }        public void dragOver(DropTargetDragEvent dtde) {
            }        public void dropActionChanged(DropTargetDragEvent dtde) {
            }        public void dragExit(DropTargetEvent dte) {
            }        public void drop(DropTargetDropEvent dtde) {
                try {
                    Transferable tr = dtde.getTransferable();                if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                        dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                        System.out.println("file cp");
                        List list = (List) (dtde.getTransferable()
                                .getTransferData(DataFlavor.javaFileListFlavor));
                        Iterator iterator = list.iterator();
                        while (iterator.hasNext()) {
                            File f = (File) iterator.next();
                            this.setText(f.getAbsolutePath());
                        }
                        dtde.dropComplete(true);
                        this.updateUI();
                    }else {
                        dtde.rejectDrop();
                    }
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                } catch (UnsupportedFlavorException ufe) {
                    ufe.printStackTrace();
                }
            }
            
        }
        // 变量声明 - 不进行修改                     
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextArea jTextArea1;
        // 变量声明结束                   
        
    }