Portal > Foren > Java > Desktop-Applikationen und Grafik > Drag & drop - images
Antwort
 
Themen-Optionen
Alt 14.05.2006, 21:41 Nach oben    #1
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard Drag & drop - images

hallo,

ich habe auf der SUN-seite ein beispiel mit drag & drop (images) entdeckt, das ich nutzen will.

es geht darum:
es wird eine frage gestellt, wo der user die möglichkeit hat, diese per drag & drop (images) zu beantworten. 10 images werden angezeigt, 5 sind davon richtig. der user beantwortet also die frage, indem er die images auf die vorgesehenen felder droppt und betätigt anschließend einen button, um seine antwort auf richtig oder falsch zu überprüfen.

das grafische habe ich soweit fertig.

mein problem ist nur, dass ich nicht rauskriegen kann, was der user geantwortet hat.

zB bei einem jtextfielt habe ich die möglichkeit mit getText() an die antwort zu kommen, wie mache ich das in diesem fall?

Ein Ansatz von mir war, über den Namen zu gehen. Aber irgendwas mache ich hier falsch. zB DTPicture eins soll den Namen der "gedraggten" Komponente erhalten.

Hier meine Klassen. Vielleicht kann mir bitte jemand helfen?


Code:
public class Picture extends JComponent 
    implements MouseListener, FocusListener, Accessible {
    
    /**
     * 
     */
    private static final long serialVersionUID = -5579041754578833061L;
    Image image;
    String name;
    
    public Picture(Image image, String name) {
        this.image = image;
        this.name = name;
        System.out.println("this.name Picture: "+name);
        setFocusable(true);
        addMouseListener(this);
        addFocusListener(this);
    }    
    
    public void mouseClicked(MouseEvent arg0) {
        requestFocusInWindow();        
    }

    public void mousePressed(MouseEvent arg0) {        
    }

    public void mouseReleased(MouseEvent arg0) {
    }

    public void mouseEntered(MouseEvent arg0) {        
    }

    public void mouseExited(MouseEvent arg0) {
    }

    public void focusGained(FocusEvent fe) {
        //Komponente bekommt einen roten Rand
        this.repaint();
    }

    public void focusLost(FocusEvent fl) {
        //Komponente bekommt einen schwarzen Rand
        this.repaint();
    }
    
    protected void paintComponent(Graphics graphics) {
        Graphics g = graphics.create();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, image == null ? 103 : image.getWidth(this),
                         image == null ? 62 : image.getHeight(this));
        
        if (image != null) {
            //image wird gezeichnet
            g.drawImage(image, 0, 0, this);
        }
        
        //wenn das picture den focus hat, roten Rand zeichnen
        if (isFocusOwner()) {
            g.setColor(Color.RED);
        }
        else 
        {
            g.setColor(Color.BLACK);            
        }
        g.drawRect(0, 0, image == null ? 103 : image.getWidth(this),
                         image == null ? 62 : image.getHeight(this));
        g.dispose();
    }
}
Code:
import java.awt.Image;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import javax.swing.TransferHandler;


/**
 * Subclass von Picture, die den Datentransfer ermöglicht
 * 
 *
 */

public class DTPicture extends Picture implements MouseMotionListener {

    /**
     * 
     */
    private static final long serialVersionUID = -7565390812902798045L;
    
    private MouseEvent firstMouseEvent = null;

    private static boolean installInputMapBindings = true;
    
    public DTPicture(Image image, String name) {
        super(image, name);
        addMouseMotionListener(this);
        
        if (installInputMapBindings) {
            InputMap imap = this.getInputMap();
            imap.put(KeyStroke.getKeyStroke("ctrl X"), TransferHandler.getCutAction().getValue(Action.NAME));
            imap.put(KeyStroke.getKeyStroke("ctrl C"), TransferHandler.getCopyAction().getValue(Action.NAME));
            imap.put(KeyStroke.getKeyStroke("ctrl V"), TransferHandler.getPasteAction().getValue(Action.NAME));
        }
        
        ActionMap map = this.getActionMap();
        map.put(TransferHandler.getCutAction().getValue(Action.NAME), TransferHandler.getCutAction());
        map.put(TransferHandler.getCopyAction().getValue(Action.NAME), TransferHandler.getCopyAction());
        map.put(TransferHandler.getPasteAction().getValue(Action.NAME), TransferHandler.getPasteAction());
    }
    
    public void setImage(Image image) {
        this.image = image;
        this.repaint();
    }    
    
    public void setName(String name) {
        this.name = name;
    }    
    
    public void mousePressed(MouseEvent me) {
        //nicht draggen, wenn kein Image vorhanden
        if (image == null)
            return;
        firstMouseEvent = me;
        me.consume();
    }

    public void mouseDragged(MouseEvent md) {
        //nicht draggen, wenn die Komponente kein image aufweist
        if (image == null)
            return;
        if (firstMouseEvent != null) {
            md.consume();
        
            int ctrlMask = InputEvent.CTRL_DOWN_MASK;
            int action = ((md.getModifiersEx() & ctrlMask ) == ctrlMask) ? TransferHandler.COPY : TransferHandler.MOVE;
            
            int dx = Math.abs(md.getX() - firstMouseEvent.getX());
            int dy = Math.abs(md.getY() - firstMouseEvent.getY());
            
            //5 Pixel ist der Beginn von drag
            if (dx > 5 || dy > 5) {
                //das ist ein drag, kein klick
                JComponent c = (JComponent)md.getSource();
                TransferHandler handler = c.getTransferHandler();
                //das ist ein drag
                handler.exportAsDrag(c, firstMouseEvent, action);
                firstMouseEvent = null;
            }
        }
    }
    
    public void MouseReleased(MouseEvent mr) {
        firstMouseEvent = null;
    }
    
    public static void setInstallInputMapBindings(boolean status) {
        installInputMapBindings = status;
    }
    
    public static boolean getInstallInputMapBindings() {
        return installInputMapBindings;
    }

    public void mouseMoved(MouseEvent arg0) {
    }
}
Code:
import java.awt.Image;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

import javax.swing.JComponent;
import javax.swing.TransferHandler;


class PictureTransferHandler extends TransferHandler {
    
    DataFlavor pictureFlavor = DataFlavor.imageFlavor;
    DTPicture sourcePic;
    boolean shouldRemove;
    
    public boolean importData(JComponent c, Transferable t) {
        Image image;
        String name = null;
        if (canImport(c, t.getTransferDataFlavors())) {
            DTPicture pic = (DTPicture)c;
            //nicht auf mir selber droppen
            if (sourcePic == pic) {
                shouldRemove = false;
                return true;
            }
            try {
                image = (Image)t.getTransferData(pictureFlavor);
                //Component auf das neue Picture setzen
                pic.setImage(image);
                pic.setName(name);
                return true;
            } catch (UnsupportedFlavorException ufe) {
                System.out.println("importData: unsupported data flavor");
            } catch (IOException ioe) {
                System.out.println("importData: I/O exception");            
            }
        }
        return false;
    }
    
    protected Transferable createTransferable (JComponent c) {
        sourcePic = (DTPicture)c;
        shouldRemove = true;
        return new PictureTransferable(sourcePic);
    }
    
    public int getSourceActions(JComponent c) {
        return COPY_OR_MOVE;
    }
    
    protected void exportDone(JComponent c, Transferable data, int action) {
        if (shouldRemove && (action == MOVE)) {
            sourcePic.setImage(null);
        }
        sourcePic = null;
    }
    
    public boolean canImport(JComponent c, DataFlavor[] flavors) {
        for (int i = 0; i < flavors.length; i++) {
            if (pictureFlavor.equals(flavors[i])) {
                return true;
            }
        }
        return false;
    }
    
    class PictureTransferable implements Transferable {
        private Image image;
        
        PictureTransferable(DTPicture pic) {
            image = pic.image;
        }
        
        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
            if (!isDataFlavorSupported(flavor)) {
                throw new UnsupportedFlavorException(flavor);
            }
            return image;
        }
        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[] { pictureFlavor };
        }
        public boolean isDataFlavorSupported(DataFlavor flavor) {
            return pictureFlavor.equals(flavor);
        }
    }
}

Code:
public class DragDrop extends JFrame {

    private static final long serialVersionUID = -2161168635983095623L;

    private JPanel jContentPane = null;
    private JPanel achtPanel = null;
    private JLabel bild = null;
    private JButton jButton5;
    
    private DTPicture PAZgN, mGrWGrp, KdoGrp, StbGrp, VersGrp, 
              MKGrp, UZg, SSchGrp, JgZg3, sGrWZg,
              eins, zwei, drei, vier, fuenf;

    
    
    static String PAZgNString = "PAZgN";
    static String mGrWGrpString = "mGrWGrp";
    static String KdoGrpString = "KdoGrp";
    static String StbGrpString = "StbGrp";
    static String VersGrpString = "VersGrp";
    static String MKGrpString = "MKGrp";
    static String UZgString = "UZg";
    static String SSchGrpString = "SSchGrp";
    static String JgZg3String = "JgZg3";
    static String sGrWZgString = "sGrWZg";
    
    PictureTransferHandler picHandler;
    
    /**
     * This is the default constructor
     */
    public DragDrop() {
        super();
        this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
        this.setContentPane(getJContentPane());
        this.setTitle("Die Jäger");
        
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        
        jContentPane = new JPanel();
        jContentPane.setLayout(null);
        jContentPane.setBackground(Color.green);
        jContentPane.setEnabled(false);
        
        achtPanel = new JPanel();
        achtPanel.setLayout(null);
        achtPanel.setBackground(new java.awt.Color(208, 207,207));
        achtPanel.setBounds(0, 0, 800, 500);
        
        jContentPane.add(achtPanel);
        
        picHandler = new PictureTransferHandler();
        
        bild = new JLabel();
        bild.setBounds(new java.awt.Rectangle(77,135,621,99));
        bild.setIcon(new ImageIcon(getClass().getResource("images/JgKp ohne.png")));
        bild.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        bild.setHorizontalTextPosition(javax.swing.SwingConstants.TRAILING);
        bild.setVerticalAlignment(javax.swing.SwingConstants.TOP);
        achtPanel.add(bild);
        
        PAZgN = new DTPicture(createImageIcon("images/" + PAZgNString + ".jpg", PAZgNString).getImage(), "PAZgN");
        PAZgN.setTransferHandler(picHandler);
        PAZgN.setBounds(new java.awt.Rectangle(31, 317, 105, 63));
        achtPanel.add(PAZgN);
        
        mGrWGrp = new DTPicture(createImageIcon("images/" + mGrWGrpString + ".jpg", mGrWGrpString).getImage(), "mGrWGrp");
        mGrWGrp.setTransferHandler(picHandler);
        mGrWGrp.setBounds(183, 317, 105, 63);
        achtPanel.add(mGrWGrp);
        
        KdoGrp = new DTPicture(createImageIcon("images/" + KdoGrpString + ".jpg", KdoGrpString).getImage(), "KdoGrp");
        KdoGrp.setTransferHandler(picHandler);
        KdoGrp.setBounds(335, 317, 105, 63);  
        achtPanel.add(KdoGrp);
        
        StbGrp = new DTPicture(createImageIcon("images/" + StbGrpString + ".jpg", StbGrpString).getImage(), "StbGrp");
        StbGrp.setTransferHandler(picHandler);
        StbGrp.setBounds(489, 317, 105, 63);     
        achtPanel.add(StbGrp);
        
        VersGrp = new DTPicture(createImageIcon("images/" + VersGrpString + ".jpg", VersGrpString).getImage(), "VersGrp");
        VersGrp.setTransferHandler(picHandler);
        VersGrp.setBounds(640, 317, 105, 63);     
        achtPanel.add(VersGrp);
        
        MKGrp = new DTPicture(createImageIcon("images/" + MKGrpString + ".jpg", MKGrpString).getImage(), "MKGrp");
        MKGrp.setTransferHandler(picHandler);
        MKGrp.setBounds(31, 392, 105, 63);     
        achtPanel.add(MKGrp);
        
        UZg = new DTPicture(createImageIcon("images/" + UZgString + ".jpg", UZgString).getImage(), "UZg");
        UZg.setTransferHandler(picHandler);
        UZg.setBounds(183, 392, 105, 63);     
        achtPanel.add(UZg);
        
        SSchGrp = new DTPicture(createImageIcon("images/" + SSchGrpString + ".jpg", SSchGrpString).getImage(), "SSchGrp");
        SSchGrp.setTransferHandler(picHandler);
        SSchGrp.setBounds(335, 392, 105, 63);     
        achtPanel.add(SSchGrp);
        
        JgZg3 = new DTPicture(createImageIcon("images/" + JgZg3String + ".jpg", JgZg3String).getImage(), "JgZg3");
        JgZg3.setTransferHandler(picHandler);
        JgZg3.setBounds(489, 392, 105, 63);     
        achtPanel.add(JgZg3);
        
        sGrWZg = new DTPicture(createImageIcon("images/" + sGrWZgString + ".jpg", sGrWZgString).getImage(), "sGrWZg");
        sGrWZg.setTransferHandler(picHandler);
        sGrWZg.setBounds(640, 392, 105, 63);     
        achtPanel.add(sGrWZg);
        
        eins = new DTPicture(null, null);
        eins.setTransferHandler(picHandler);
        eins.setBounds(new java.awt.Rectangle(31, 234, 105, 63));
        achtPanel.add(eins);
        
        zwei = new DTPicture(null, null);
        zwei.setTransferHandler(picHandler);
        zwei.setBounds(new java.awt.Rectangle(183, 234, 105, 63));
        achtPanel.add(zwei);
        
        drei = new DTPicture(null, null);
        drei.setTransferHandler(picHandler);
        drei.setBounds(new java.awt.Rectangle(335, 235, 105, 63));
        achtPanel.add(drei);
        
        vier = new DTPicture(null, null);
        vier.setTransferHandler(picHandler);
        vier.setBounds(new java.awt.Rectangle(489, 235, 105, 63));
        achtPanel.add(vier);
        
        fuenf = new DTPicture(null, null);
        fuenf.setTransferHandler(picHandler);
        fuenf.setBounds(640, 234, 105, 63);
        achtPanel.add(fuenf);
        
        jButton5 = new JButton();
        jButton5.setLocation(new java.awt.Point(717, 86));
        jButton5.setIcon(new ImageIcon(getClass().getResource("/logo_button/okverwendet.png")));
        jButton5.setPreferredSize(new java.awt.Dimension(50, 45));
        jButton5.setSize(new java.awt.Dimension(50, 45));
        jButton5.addActionListener(okListener);
        achtPanel.add(jButton5);
        
        return jContentPane;
    }
    
    protected static ImageIcon createImageIcon(String path, String description) {
        java.net.URL imageURL = DragDrop.class.getResource(path);

        if (imageURL == null) {
            System.err.println("Resource not found: "+ path);
            return null;
        } 
        else {
            return new ImageIcon(imageURL, description);
        }
    }
    
    ActionListener okListener = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //String name = ((DTPicture)eins).getName();
            //System.out.println(eins.getName());
            //System.out.println("eins :"+name);
        }
    };
    
    public static void main(String args[]) {
        DragDrop dnd = new DragDrop();
        dnd.setSize(800,600);
        dnd.setVisible(true);
        dnd.setResizable(false);
    }
}
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.05.2006, 23:02 Nach oben    #2
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 426
Standard

Also, ich hab mir das ma angeschaut, und zwar noch net ganz verstanden, wie dass ganze jetzt läuft.... da wäre es praktisch, es in der praxis testen zu können. Dazu fehlen aber die bilder. viellecht könntest du die noch hoch laden?
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.05.2006, 00:14 Nach oben    #3
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard

hat sich erledigt - problem gelöst
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.05.2006, 16:37 Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

Könntest du Bitte auch posten woran es lag.
Es kommen bestimmt noch mehr, die ein ähnliches Problem haben.

Danke.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.05.2006, 15:48 Nach oben    #5
Benutzer
 
Registriert seit: 30.11.2005
Beiträge: 42
Standard

hallo,

ich bin schon richtig gelegen mit meinem ersten ansatz nur habe ich ein paar dinge übersehen.

wird ein neues DTPicture objekt erzeugt, den namen des bildes mitgeben. in diesem fall "PAZg".

der datenaustausch darf nicht nur für das image durchgeführt werden, sondern auch für den namen.

Code:
DataFlavor nameFlavor = DataFlavor.stringFlavor;
hier mein code (voll funktionsfähig

Drag-Source:
Code:
PAZg = new DTPicture(new ImageIcon(c4).getImage(), "PAZg");
PAZg.setTransferHandler(picHandler);
PAZg.setBounds(31, 317, 105, 63);
panel.add(PAZg);
Drag-Target
Code:
eins = new DTPicture(null, null);
eins.setTransferHandler(picHandler);
eins.setBounds(31, 234, 105, 63);
panel.add(eins);
Antwort auslesen (String) und in Liste speichern:
Code:
antwort1 = ((DTPicture)eins).getName(); dndList.add(antwort1);
Code:
public class Picture extends JComponent 
    implements MouseListener, FocusListener, Accessible {
    
    private static final long serialVersionUID = -5579041754578833061L;
    
    Image image;
    String name;
    
    /**
     * @param image
     * @param name
     */
    public Picture(Image image, String name) {
        this.image = image;
        this.name = name;
        setFocusable(true);
        addMouseListener(this);
        addFocusListener(this);
    }
    
    /* (non-Javadoc)
     * @see java.awt.Component#getName()
     */
    public String getName() {
        return name;
    }
    
    /* (non-Javadoc)
     * @see java.awt.Component#setName(java.lang.String)
     */
    public void setName(String name) {
        this.name = name;
    }
Code:
public class DTPicture extends Picture implements MouseMotionListener {

    private static final long serialVersionUID = -7565390812902798045L;
    
    private MouseEvent firstMouseEvent = null;
    
    /**
     * @param image
     * @param name
     */
    public DTPicture(Image image, String name) {
        super(image, name);
        addMouseMotionListener(this);
    }
    
    /**
     * @param image
     */
    public void setImage(Image image) {
        this.image = image;
        this.repaint();
    }    
    
    /* (non-Javadoc)
     * @see java.awt.Component#setName(java.lang.String)
     */
    public void setName(String name) {
        this.name = name;
    }    
    
    /* (non-Javadoc)
     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
     * 
     * Wenn das Bild mit der Maus angeklickt wird, nicht draggen, wenn kein image vorhanden
     */
    public void mousePressed(MouseEvent me) {
        if (image == null)
            return;
        firstMouseEvent = me;
        me.consume();
    }

    /* (non-Javadoc)
     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
     */
    public void mouseDragged(MouseEvent md) {
        if (image == null) //nicht draggen, wenn die Komponente kein image aufweist
            return;
        if (firstMouseEvent != null) {
            md.consume();
        
            int ctrlMask = InputEvent.CTRL_DOWN_MASK;
            int action = ((md.getModifiersEx() & ctrlMask ) == ctrlMask) ? TransferHandler.COPY : TransferHandler.MOVE;
            
            int dx = Math.abs(md.getX() - firstMouseEvent.getX());
            int dy = Math.abs(md.getY() - firstMouseEvent.getY());
            
            if (dx > 5 || dy > 5) { //5 Pixel ist der Beginn von drag
                JComponent c = (JComponent)md.getSource(); //das ist ein drag, kein klick
                TransferHandler handler = c.getTransferHandler();
                handler.exportAsDrag(c, firstMouseEvent, action);
                firstMouseEvent = null;
            }
        }
    }
    
    /**
     * @param mr
     */
    public void MouseReleased(MouseEvent mr) {
        firstMouseEvent = null;
    }
    
    /* (non-Javadoc)
     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
     */
    public void mouseMoved(MouseEvent arg0) {
    }
}
Code:
class PictureTransferHandler extends TransferHandler {
    
    private static final long serialVersionUID = 3520414919616717936L;
    
    /**
     * Datenaustausch für image und name
     */
    DataFlavor pictureFlavor = DataFlavor.imageFlavor;
    DataFlavor nameFlavor = DataFlavor.stringFlavor;
    
    DTPicture sourcePic;
    boolean shouldRemove;
    
    /* (non-Javadoc)
     * @see javax.swing.TransferHandler#importData(javax.swing.JComponent, java.awt.datatransfer.Transferable)
     */
    public boolean importData(JComponent c, Transferable t) {
        Image image;
        String name = null;
        if (canImport(c, t.getTransferDataFlavors())) {
            DTPicture pic = (DTPicture)c;
            if (sourcePic == pic) {  //nicht auf mir selber droppen
                shouldRemove = false;
                System.out.println("source Pic == pic");
                return true;
            }
            if (pic.name != null) {  //wenn schon ein image am Platz liegt, ist droppen nicht mehr erlaubt
                shouldRemove = false;
                return true;
            }
            try {
                image = (Image)t.getTransferData(pictureFlavor);
                name = (String)t.getTransferData(nameFlavor);
                
                //Component auf das neue Picture setzen
                pic.setImage(image);
                pic.setName(name);
                
                return true;
            } catch (UnsupportedFlavorException ufe) {
                System.out.println("importData: unsupported data flavor");
            } catch (IOException ioe) {
                System.out.println("importData: I/O exception");            
            }
        }
        return false;
    }
    
    /* (non-Javadoc)
     * @see javax.swing.TransferHandler#createTransferable(javax.swing.JComponent)
     */
    protected Transferable createTransferable (JComponent c) {
        sourcePic = (DTPicture)c;
        shouldRemove = true;
        return new PictureTransferable(sourcePic);
    }
    
    /* (non-Javadoc)
     * @see javax.swing.TransferHandler#getSourceActions(javax.swing.JComponent)
     */
    public int getSourceActions(JComponent c) {
        return MOVE;
    }
    
    /* (non-Javadoc)
     * @see javax.swing.TransferHandler#exportDone(javax.swing.JComponent, java.awt.datatransfer.Transferable, int)
     */
    protected void exportDone(JComponent c, Transferable data, int action) {
        if (shouldRemove && (action == MOVE)) {
            sourcePic.setImage(null);
            sourcePic.name = null;
        }
        sourcePic = null;
    }
    
    /* (non-Javadoc)
     * @see javax.swing.TransferHandler#canImport(javax.swing.JComponent, java.awt.datatransfer.DataFlavor[])
     */
    public boolean canImport(JComponent c, DataFlavor[] flavors) {
        for (int i = 0; i < flavors.length; i++) {
            if (pictureFlavor.equals(flavors[i])) {
                return true;
            }
        }
        return false;
    }
    
    /**
     * @author 
     *
     */
    class PictureTransferable implements Transferable {
        private Image image;
        private String name;
        
        /**
         * @param pic
         */
        PictureTransferable(DTPicture pic) {
            image = pic.image;
            name = pic.name;
        }
        
        /* (non-Javadoc)
         * @see java.awt.datatransfer.Transferable#getTransferData(java.awt.datatransfer.DataFlavor)
         */
        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
            if (flavor.equals(pictureFlavor)) {
                return image;
            }
            else if (flavor.equals(nameFlavor)) {
                return name;
            }
            else throw new UnsupportedFlavorException(flavor);
        }
        
        /* (non-Javadoc)
         * @see java.awt.datatransfer.Transferable#getTransferDataFlavors()
         */
        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[] { pictureFlavor, nameFlavor };
        }
        
        /* (non-Javadoc)
         * @see java.awt.datatransfer.Transferable#isDataFlavorSupported(java.awt.datatransfer.DataFlavor)
         */
        public boolean isDataFlavorSupported(DataFlavor flavor) {
            return pictureFlavor.equals(flavor) || nameFlavor.equals(flavor);
        }
    }
}
risa ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Images in JFrames am82 Desktop-Applikationen und Grafik 9 02.12.2005 12:16
Drag and Drop? Java17 Desktop-Applikationen und Grafik 15 05.05.2005 10:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:48 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44