⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagedroptargetdemo.java

📁 oraily的Swing hacks code
💻 JAVA
字号:
import java.awt.*;import java.awt.datatransfer.*;import java.awt.dnd.*;import javax.swing.*;import java.net.URL;import java.io.*;import java.util.*;import java.lang.reflect.*;public class ImageDropTargetDemo extends JPanel    implements DropTargetListener {    DropTarget dropTarget;    JLabel dropHereLabel;    static DataFlavor urlFlavor, uriListFlavor, macPictStreamFlavor;    static {        try {            urlFlavor =                new DataFlavor ("application/x-java-url; class=java.net.URL");            uriListFlavor =                new DataFlavor ("text/uri-list; class=java.lang.String");            macPictStreamFlavor =                new DataFlavor ("image/x-pict; class=java.io.InputStream");        } catch (ClassNotFoundException cnfe) {            cnfe.printStackTrace();        }    }    public ImageDropTargetDemo()  {        super(new BorderLayout());        dropHereLabel = new JLabel ("   Drop here   ",                                    SwingConstants.CENTER);        dropHereLabel.setFont (getFont().deriveFont (Font.BOLD, 24.0f));        add (dropHereLabel, BorderLayout.CENTER);        // set up drop target stuff        dropTarget = new DropTarget (dropHereLabel, this);    }    public static void main (String[] args) {        JFrame frame = new JFrame ("Image DropTarget Demo");        ImageDropTargetDemo demoPanel = new ImageDropTargetDemo();        frame.getContentPane().add (demoPanel);        frame.pack();        frame.setVisible(true);    }    // drop target listener events    public void dragEnter (DropTargetDragEvent dtde) {        System.out.println ("dragEnter");    }    public void dragExit (DropTargetEvent dte) {        System.out.println ("dragExit");    }       public void dragOver (DropTargetDragEvent dtde) {        System.out.println ("dragOver");    }    public void drop (DropTargetDropEvent dtde) {        System.out.println ("drop");        dtde.acceptDrop (DnDConstants.ACTION_COPY_OR_MOVE);        Transferable trans = dtde.getTransferable();        System.out.println ("Flavors:");        dumpDataFlavors (trans);        boolean gotData = false;        try {            // try to get an image            if (trans.isDataFlavorSupported (DataFlavor.imageFlavor)) {                System.out.println ("image flavor is supported");                Image img = (Image) trans.getTransferData (DataFlavor.imageFlavor);                showImageInNewFrame (img);                gotData = true;            } else if (trans.isDataFlavorSupported (                              DataFlavor.javaFileListFlavor)) {                System.out.println ("javaFileList is supported");                java.util.List list = (java.util.List)                    trans.getTransferData (DataFlavor.javaFileListFlavor);                ListIterator it = list.listIterator();                while (it.hasNext()) {                    File f = (File) it.next();                    ImageIcon icon = new ImageIcon (f.getAbsolutePath());                    showImageInNewFrame (icon);                }                gotData = true;            } else if (trans.isDataFlavorSupported (uriListFlavor)) {                System.out.println ("uri-list flavor is supported");                String uris = (String)                    trans.getTransferData (uriListFlavor);                // url-lists are defined by rfc 2483 as crlf-delimited                StringTokenizer izer = new StringTokenizer (uris, "\r\n");                while (izer.hasMoreTokens ()) {                    String uri = izer.nextToken();                    System.out.println (uri);                    ImageIcon icon = new ImageIcon (uri);                    showImageInNewFrame (icon);                }                gotData = true;            } else if (trans.isDataFlavorSupported (urlFlavor)) {                System.out.println ("url flavor is supported");                URL url = (URL) trans.getTransferData (urlFlavor);                System.out.println (url.toString());                ImageIcon icon = new ImageIcon (url);                showImageInNewFrame (icon);                gotData = true;            } else if (trans.isDataFlavorSupported (macPictStreamFlavor)) {                System.out.println ("mac pict stream flavor is supported");                InputStream in =                    (InputStream) trans.getTransferData (macPictStreamFlavor);                // for the benefit of the non-mac crowd, this is                // done with reflection.  directly, it would be:                // Image img =  QTJPictHelper.pictStreamToJavaImage (in);                Class qtjphClass = Class.forName ("QTJPictHelper");                Class[] methodParamTypes = { java.io.InputStream.class };                Method method =                    qtjphClass.getDeclaredMethod ("pictStreamToJavaImage",                                                   methodParamTypes);                InputStream[] methodParams = { in };                Image img = (Image) method.invoke (null, methodParams);                showImageInNewFrame (img);                gotData = true;            }        } catch (Exception e) {            e.printStackTrace();        } finally {            System.out.println ("gotData is " + gotData);            dtde.dropComplete (gotData);        }    }    public void dropActionChanged (DropTargetDragEvent dtde) {        System.out.println ("dropActionChanged");    }    public void showImageInNewFrame (ImageIcon icon) {        JFrame frame = new JFrame();        frame.getContentPane().add (new JLabel (icon));        frame.pack();        frame.setVisible(true);    }    public void showImageInNewFrame (Image image) {        showImageInNewFrame (new ImageIcon (image));    }    private void dumpDataFlavors (Transferable trans) {        System.out.println ("Flavors:");        DataFlavor[] flavors = trans.getTransferDataFlavors();        for (int i=0; i<flavors.length; i++) {            System.out.println ("*** " + i + ": " + flavors[i]);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -