import java.awt.BorderLayout; import java.awt.Color; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; 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 javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; public class DropTest extends JFrame implements DropTargetListener { DropTarget dt; JTextArea ta; public DropTest() { super("Drop Test"); setSize(300, 300); getContentPane().add( new JLabel("Drop a list from your file chooser here:"), BorderLayout.NORTH); ta = new JTextArea(); ta.setBackground(Color.white); getContentPane().add(ta, BorderLayout.CENTER); // Set up our text area to recieve drops... // This class will handle drop events dt = new DropTarget(ta, this); setVisible(true); } public void dragEnter(DropTargetDragEvent dtde) { System.out.println("Drag Enter"); } public void dragExit(DropTargetEvent dte) { System.out.println("Source: " + dte.getSource()); System.out.println("Drag Exit"); } public void dragOver(DropTargetDragEvent dtde) { System.out.println("Drag Over"); } public void dropActionChanged(DropTargetDragEvent dtde) { System.out.println("Drop Action Changed"); } public void drop(DropTargetDropEvent dtde) { try { // Ok, get the dropped object and try to figure out what it is Transferable tr = dtde.getTransferable(); DataFlavor[] flavors = tr.getTransferDataFlavors(); for (int i = 0; i < flavors.length; i++) { System.out.println("Possible flavor: " + flavors[i].getMimeType()); // Check for file lists specifically if (flavors[i].isFlavorJavaFileListType()) { // Great! Accept copy drops... dtde.acceptDrop(DnDConstants.ACTION_COPY); ta.setText("Successful file list drop.\n\n"); // And add the list of file names to our text area java.util.List list = (java.util.List) tr .getTransferData(flavors[i]); for (int j = 0; j < list.size(); j++) { ta.append(list.get(j) + "\n"); } // If we made it this far, everything worked. dtde.dropComplete(true); return; } } // Hmm, the user must not have dropped a file list System.out.println("Drop failed: " + dtde); dtde.rejectDrop(); } catch (Exception e) { e.printStackTrace(); dtde.rejectDrop(); } } public static void main(String args[]) { new DropTest(); } }
第二个例子代码:public class DropTest extends JFrame{ DropTarget dt; JTextArea ta; public DropTest(){ super("Drop Test"); this.setBounds(300,300,600,400); getContentPane().add(new JLabel("Drop a list from your file chooser here:"),BorderLayout.NORTH); ta = new JTextArea(); ta.setBackground(Color.white); dt = new DropTarget(ta,new Mylistener()); JScrollPane jpane = new JScrollPane(ta); getContentPane().add(jpane,BorderLayout.CENTER); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); setVisible(true); } class Mylistener extends DropTargetAdapter{ public void drop(DropTargetDropEvent dtde){ try{ // Ok, get the dropped object and try to figure out what it is Transferable tr = dtde.getTransferable(); DataFlavor[] flavors = tr.getTransferDataFlavors(); for(int i = 0;i < flavors.length;i++){ System.out.println("Possible flavor: " + flavors[i].getMimeType()); // Check for file lists specifically if(flavors[i].isFlavorJavaFileListType()){ // Great! Accept copy drops... dtde.acceptDrop(DnDConstants.ACTION_COPY); ta.setText("Successful file list drop.\n"); // And add the list of file names to our text area java.util.List list = (java.util.List) tr.getTransferData(flavors[i]); for(int j = 0;j < list.size();j++){ ta.append(list.get(j) + "\n"); appendText((File)list.get(j)); } // If we made it this far, everything worked. dtde.dropComplete(true); return; } } // Hmm, the user must not have dropped a file list System.out.println("Drop failed: " + dtde); dtde.rejectDrop(); }catch(Exception e){ e.printStackTrace(); dtde.rejectDrop(); } } } private void appendText(File file){ if(file.getAbsolutePath().lastIndexOf(".txt") != -1){ BufferedReader br = null; InputStreamReader isr = null; if(!file.exists()) return; String lineStr = null; try{ isr = new FileReader(file); br = new BufferedReader(isr); while((lineStr = br.readLine()) != null){ ta.append(lineStr+"\n"); } }catch(Exception e){ e.printStackTrace(); }finally{ if(br != null) try{ br.close(); }catch(IOException e){ e.printStackTrace(); } } } } public static void main(String args[]){ new DropTest(); } }
我的例子截图:
把文件拖入窗体的例子
最新推荐文章于 2024-09-25 23:15:48 发布