从windows拖放一个文件到panel中,如何判断那个文件名称?     public void drop(DropTargetDropEvent e) {            try {
            DataFlavor stringFlavor = DataFlavor.stringFlavor;
            Transferable tr = e.getTransferable();
        if(tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor))
                {
               e.acceptDrop (
                        DnDConstants.ACTION_COPY_OR_MOVE);
                    java.util.List fileList = (java.util.List)
                                       tr.getTransferData(DataFlavor.javaFileListFlavor);
            Iterator iterator = fileList.iterator();            while (iterator.hasNext())
                               {
                                 File file = (File)iterator.next();
                                 Hashtable hashtable = new Hashtable();
                                 hashtable.put("name",file.getName());
                                 hashtable.put("url",file.toURL().toString());
                                 hashtable.put("path",file.getAbsolutePath());
                           //      ((DefaultListModel)getModel()).addElement(hashtable);
                               }
                              e.getDropTargetContext().dropComplete(true);
                         } else {
                           System.err.println ("Rejected");
                           e.rejectDrop();
                         }      if(tr.isDataFlavorSupported(stringFlavor))
          {          }              
    }

解决方案 »

  1.   


    import javax.swing.*;
    import java.awt.*;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.awt.dnd.*;
    import java.awt.event.*;
    import java.text.*;
    import java.util.*;
    import java.io.File;
    import java.io.IOException;
       //import java.awt.event.*;
       public class  test implements DropTargetListener{
           private JFrame mainFrame;
           private JPanel panel_south,panel_east=new JPanel();       public void test()
           {
              mainFrame = new JFrame("本地性能测试器");
              new DropTarget(panel_east, DnDConstants.ACTION_COPY_OR_MOVE, this);
              mainFrame.getContentPane().add(panel_east);
              mainFrame.setVisible(true);       }             public void drop(DropTargetDropEvent e) {            try {
                DataFlavor stringFlavor = DataFlavor.stringFlavor;
                Transferable tr = e.getTransferable();
            if(tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor))
                    {
                   e.acceptDrop (
                            DnDConstants.ACTION_COPY_OR_MOVE);
                        java.util.List fileList = (java.util.List)
                                           tr.getTransferData(DataFlavor.javaFileListFlavor);
                Iterator iterator = fileList.iterator();
                  System.out.println (iterator);
                while (iterator.hasNext())
                                   {
                                     File file = (File)iterator.next();
                                     Hashtable hashtable = new Hashtable();
                                     hashtable.put("name",file.getName());
                                     hashtable.put("url",file.toURL().toString());
                                     hashtable.put("path",file.getAbsolutePath());
                               //      ((DefaultListModel)getModel()).addElement(hashtable);
                                   }
                                  e.getDropTargetContext().dropComplete(true);
                             } else {
                               System.err.println ("Rejected");
                               e.rejectDrop();
                             }      if(tr.isDataFlavorSupported(stringFlavor))
              {
                   String filename = (String) tr.getTransferData(stringFlavor);
            }      }catch(Exception e1)
                {            }
       }       public void dragEnter(DropTargetDragEvent e) {
              }          public void dragExit(DropTargetEvent e) {
              }          public void dragOver(DropTargetDragEvent e) {
              }          public void dropActionChanged(DropTargetDragEvent e) {
              }
     public static void main(String args[])            {
                     test demo=new test();            //    demo.setVisible(true);
                }
       }
      

  2.   

    hashtable.put("name",file.getName());
    这里不是得到文件名了吗?
      

  3.   

    public void drop(DropTargetDropEvent e) {        if (!isDropAcceptable(e)) {
                e.rejectDrop();
                return;
            }
            e.acceptDrop(DnDConstants.ACTION_COPY);        String filename = "";
            String filenames[] = new String[3];
            ;        try {
                DataFlavor stringFlavor = DataFlavor.stringFlavor;
                Transferable tr = e.getTransferable();
                DataFlavor[] flavors = tr.getTransferDataFlavors();
                if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                    java.util.List fileList = (java.util.List)
                            tr.getTransferData(flavors[0]);
                    Iterator iterator = fileList.iterator();
                    while (iterator.hasNext()) {
                        File f = (File) iterator.next();
                        filename = f.toString();
                    }            } else if (tr.isDataFlavorSupported(stringFlavor)) {                filename = (String) tr.getTransferData(stringFlavor);
                } else {
                    e.rejectDrop();
                }            System.out.println(filename + "\n");            if (filename.endsWith(".bqd")) {
                    //      e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                    this.DrawPlot(filename.trim());
                    //    textPane.setCaretPosition(0);
                    //     e.dropComplete(true);
                } else if (isOurDir(filename)) {                filenames[0] = filename + "\\cpu.bqd";
                    filenames[1] = filename + "\\net.bqd";
                    filenames[2] = filename + "\\mem.bqd";
                    this.DrawPlot(filenames);
                    e.dropComplete(true);            } else {
                    System.out.println("文件或文件夹不符合规范");
                }        } catch (Exception ufe) {
                ufe.printStackTrace();
            }        e.dropComplete(true);    }