把文件拖入窗体的例子

来源:互联网 发布:空之境界俯瞰风景 知乎 编辑:程序博客网 时间:2024/05/17 09:15
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();    }}






我的例子截图:
	
				
		
原创粉丝点击