给你一个例子: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;
}
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;
}
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 说明一下该类我是自己写的一个专用来读文件的类,由于太长没办法贴出来,如果只是