帮你UP~~~~~~~
------------------------------------
体验速度,体验CSDN新版论坛助手:http://community.csdn.net/Expert/TopicView.asp?id=3108679

解决方案 »

  1.   

    参考java.awt.dnd包,
    Drag And Drop记不太清了,
    大致的做法是将你的JComponent,比如JTextArea变成一个可接受Drag&Drop的对象,并添加Drag&Drop事件的Listener,这个event包含了你在操作中所拖拽的内容的信息(文件,字符串....),接下来你应该会了吧
      

  2.   

    就是这个java.awt.dnd包,具体的请参考JAVA API。
      

  3.   

    谢谢楼上的各位高手,我参考了一下java2图形设计卷1里面介绍的拖拽,可以实现JCompnent内部的拖拽,如String的拖拽,但是程序外的文件怎么拖拽我还是没弄明白,拖拽的实现不是需要先设置拖动源吗,java程序外部的文件如何能成为拖动源呢,我的程序是要实现一个窗口,随意从某个文件夹内拖动一个文件到这个窗口,窗口能显示出文件的文件名,大小,创建日期等属性,高手们再给我指点一下吧
      

  4.   

    这个要用到windows api,不容易啊。
      

  5.   

    this is a sample for you  good luck/**
     * @version 1.00 1999-09-11
     * @author Cay Horstmann
     */import java.awt.*;
    import java.awt.datatransfer.*;
    import java.awt.event.*;
    import java.awt.dnd.*;
    import java.io.*;
    import java.util.*;
    import javax.swing.*;public class DropTargetTest
    {  public static void main(String[] args)
       {  JFrame frame = new DropTargetFrame();
          frame.show();
       }
    }class DropTargetFrame extends JFrame
    {  public DropTargetFrame()
       {  setTitle("DropTarget");
          setSize(300, 300);
          addWindowListener(new WindowAdapter()
             {  public void windowClosing(WindowEvent e)
                {  System.exit(0);
                }
             } );      Container contentPane = getContentPane();
          JTextArea textArea
             = new JTextArea("Drop items into this text area.\n");      new DropTarget(textArea,
             new TextDropTargetListener(textArea));
          contentPane.add(new JScrollPane(textArea), "Center");
       }
    }
    class TextDropTargetListener implements DropTargetListener
    {  public TextDropTargetListener(JTextArea ta)
       {  textArea = ta;
       }   public void dragEnter(DropTargetDragEvent event)
       {  int a = event.getDropAction();
          if ((a & DnDConstants.ACTION_COPY) != 0)
             textArea.append("ACTION_COPY\n");
          if ((a & DnDConstants.ACTION_MOVE) != 0)
             textArea.append("ACTION_MOVE\n");
          if ((a & DnDConstants.ACTION_LINK) != 0)
             textArea.append("ACTION_LINK\n");      if (!isDragAcceptable(event))
          {  event.rejectDrag();
             return;
          }
       }   public void dragExit(DropTargetEvent event)
       {
       }   public void dragOver(DropTargetDragEvent event)
       {  // you can provide visual feedback here
       }   public void dropActionChanged(DropTargetDragEvent event)
       {  if (!isDragAcceptable(event))
          {  event.rejectDrag();
             return;
          }
       }   public void drop(DropTargetDropEvent event)
       {  if (!isDropAcceptable(event))
          {  event.rejectDrop();
             return;
          }      event.acceptDrop(DnDConstants.ACTION_COPY);      Transferable transferable = event.getTransferable();      DataFlavor[] flavors
             = transferable.getTransferDataFlavors();
          for (int i = 0; i < flavors.length; i++)
          {  DataFlavor d = flavors[i];
             textArea.append("MIME type=" + d.getMimeType() + "\n");         try
             {  if (d.equals(DataFlavor.javaFileListFlavor))
                {  java.util.List fileList = (java.util.List)
                      transferable.getTransferData(d);
                   Iterator iterator = fileList.iterator();
                   while (iterator.hasNext())
                   {  File f = (File)iterator.next();
                      textArea.append(f + "\n");
                   }
                }
                else if (d.equals(DataFlavor.stringFlavor))
                {  String s = (String)
                      transferable.getTransferData(d);
                   textArea.append(s + "\n");
                }
                else if (d.isMimeTypeEqual("text/plain"))
                {  String charset = d.getParameter("charset");
                   InputStream in = (InputStream)
                      transferable.getTransferData(d);               boolean more = true;
                   int ch;
                   if (charset.equals("ascii"))
                   {  do
                      {  ch = in.read();
                         if (ch != 0 && ch != -1)
                            textArea.append("" + (char)ch);
                         else more = false;
                      } while (more);
                   }
                   else if (charset.equals("unicode"))
                   {  boolean littleEndian = true;
                         // if no byte ordering , we assume
                         // Windows is the culprit
                      do
                      {  ch = in.read();
                         int ch2 = in.read();
                         if (ch != -1 && littleEndian)
                            ch = (ch & 0xFF) | ((ch2 & 0xFF) << 8);
                         if (ch == 0xFFFE)
                            littleEndian = false;
                         else if (ch != 0 && ch != -1)
                            textArea.append("" + (char)ch);
                         else more = false;
                      } while (more);
                   }               textArea.append("\n");
                }
             }
             catch(Exception e)
             {  textArea.append("Error: " + e + "\n");
             }
          }
          event.dropComplete(true);
       }   public boolean isDragAcceptable(DropTargetDragEvent event)
       {  // usually, you check the available data flavors here
          // in this program, we accept all flavors
          return (event.getDropAction()
             & DnDConstants.ACTION_COPY_OR_MOVE) != 0;
       }   public boolean isDropAcceptable(DropTargetDropEvent event)
       {  // usually, you check the available data flavors here
          // in this program, we accept all flavors
          return (event.getDropAction()
             & DnDConstants.ACTION_COPY_OR_MOVE) != 0;
       }   private JTextArea textArea;
    }
      

  6.   

    用windows api可以吗,但是这个项目还要移植到苹果上,需要用纯java来实现啊