给你一个例子: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)
{
DropTargetFrame test = new DropTargetFrame();
test.show();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}class DropTargetFrame extends JFrame
{
public DropTargetFrame()
{
setTitle("DropTarget");
setSize(300,300);

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 aTextArea)
{
textArea = aTextArea;
}
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");
if ((a & DnDConstants.ACTION_LINK) != 0)
textArea.append("ACTION_LINK");

if (!isDragAcceptable(event))
{
event.rejectDrag();
return;
}
}
public void dragExit(DropTargetEvent event)
{
}
public void dragOver(DropTargetDragEvent event)
{

}
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");
}
}
catch (Exception e)
{
textArea.append(e + "\n");
}
}
event.dropComplete(true);
}
public boolean isDragAcceptable(DropTargetDragEvent event)
{
return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0;
}
public boolean isDropAcceptable(DropTargetDropEvent event)
{
return (event.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0;
}
private JTextArea textArea;
}

解决方案 »

  1.   

    普通读文件使用File就可以了
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.io.*;
    import java.awt.datatransfer.*;public class testFrame extends JFrame
    {
           JTextArea target=new JTextArea();
           testFrame()
           {
              this.add(target);
              new DropTarget(target,new TextDropTarget(target,this));
           }}
    class TextDropTarget implements DropTargetListener
    {
    private JTextArea textArea;
      private JFrame me;
        public TextDropTargetListener(JTextArea ta,JFrame me)
       {  textArea = ta;
          this.me=me;
       }   public void dragEnter(DropTargetDragEvent event)
       {
          if (!isDragAcceptable(event))
          {  event.rejectDrag();
             return;
          }
       }   public void dragExit(DropTargetEvent event)
       {
       }   public void dragOver(DropTargetDragEvent event)
       {
       }   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];
             
             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();
                      if(!f.getName().endsWith(".txt"))
                      {
                       JOptionPane.showMessageDialog(me,"系统现不支持这种类型文件","拖动文件错误",JOptionPane.ERROR_MESSAGE);
                      
                      }else
                      {
                       fileper dropFile=new fileper();
                       dropFile.ReadFile(f,textArea,me);//读文件
                      }
                      
                   }
                }
             }
             catch(Exception e)
             {  
           JOptionPane.showMessageDialog(me,""+e,"系统错误",JOptionPane.ERROR_MESSAGE);
             }
          }
          event.dropComplete(true);
       }   public boolean isDragAcceptable(DropTargetDragEvent event)
       {
          return (event.getDropAction()
             & DnDConstants.ACTION_COPY_OR_MOVE) != 0;
       }   public boolean isDropAcceptable(DropTargetDropEvent event)
       {
          return (event.getDropAction()
             & DnDConstants.ACTION_COPY_OR_MOVE) != 0;
       }   
    }//fileper 说明一下该类我是自己写的一个专用来读文件的类,由于太长没办法贴出来,如果只是
      

  2.   

    谢谢大侠们的支持。特别感谢redkey这位仁兄,你的例子结合二楼的子现在问题基本解决了。