IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows XP Discussion :

copier une image dans le clipboard windows


Sujet :

Windows XP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut copier une image dans le clipboard windows
    Bonjour,

    je desire copîer une image dans le clipboard windows, pour le texte cela fonctionne:
    StringSelection stringSelection = new StringSelection( aString );
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    clipboard.setContents( stringSelection, this );

    par contre j'arrive à recuper une image du clipboard:

    Image img=null;

    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    Transferable contents = clipboard.getContents(null);
    boolean hasTransferableImage =
    (contents != null) &&
    contents.isDataFlavorSupported(DataFlavor.imageFlavor)
    ;
    if ( hasTransferableImage ) {
    try {
    img= (Image)contents.getTransferData(DataFlavor.imageFlavor);
    }
    catch (UnsupportedFlavorException ex){
    }
    }

    par contre je ne sais pas comment fait l'operation inverse du genre:
    Image img; // passer en parametre de la fonction
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    ImageSelection imgSelection=new ImageSelection(img);
    clipboard.setContents( imgSelection, this );

    la classe ImageSelection ne semble pas exister

    auriez vous une idée? merci

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut reponse trouve avec cette exemple
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Image;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;

    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.TransferHandler;

    public class ClipImage {

    public static void main(String args[]) {

    JFrame frame = new JFrame("Clip Image");
    Container contentPane = frame.getContentPane();

    final Clipboard clipboard = frame.getToolkit().getSystemClipboard();

    Icon icon = new ImageIcon("jaeger.jpg");
    final JLabel label = new JLabel(icon);
    label.setTransferHandler(new ImageSelection());

    JScrollPane pane = new JScrollPane(label);
    contentPane.add(pane, BorderLayout.CENTER);

    JButton copy = new JButton("Copy");
    copy.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    TransferHandler handler = label.getTransferHandler();
    handler.exportToClipboard(label, clipboard,
    TransferHandler.COPY);
    }
    });

    JButton clear = new JButton("Clear");
    clear.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent actionEvent) {
    label.setIcon(null);
    }
    });

    JButton paste = new JButton("Paste");
    paste.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent actionEvent) {
    Transferable clipData = clipboard.getContents(clipboard);
    if (clipData != null) {
    if (clipData.isDataFlavorSupported(DataFlavor.imageFlavor)) {
    TransferHandler handler = label.getTransferHandler();
    handler.importData(label, clipData);
    }
    }
    }
    });

    JPanel p = new JPanel();
    p.add(copy);
    p.add(clear);
    p.add(paste);
    contentPane.add(p, BorderLayout.SOUTH);
    frame.setSize(300, 300);
    frame.show();
    }
    }

    class ImageSelection extends TransferHandler implements Transferable {

    private static final DataFlavor flavors[] = { DataFlavor.imageFlavor };

    private JLabel source;

    private Image image;

    public int getSourceActions(JComponent c) {
    return TransferHandler.COPY;
    }

    public boolean canImport(JComponent comp, DataFlavor flavor[]) {
    if (!(comp instanceof JLabel)) {
    return false;
    }
    for (int i = 0, n = flavor.length; i < n; i++) {
    for (int j = 0, m = flavors.length; j < m; j++) {
    if (flavor[i].equals(flavors[j])) {
    return true;
    }
    }
    }
    return false;
    }

    public Transferable createTransferable(JComponent comp) {
    // Clear
    source = null;
    image = null;

    if (comp instanceof JLabel) {
    JLabel label = (JLabel) comp;
    Icon icon = label.getIcon();
    if (icon instanceof ImageIcon) {
    image = ((ImageIcon) icon).getImage();
    source = label;
    return this;
    }
    }
    return null;
    }

    public boolean importData(JComponent comp, Transferable t) {
    if (comp instanceof JLabel) {
    JLabel label = (JLabel) comp;
    if (t.isDataFlavorSupported(flavors[0])) {
    try {
    image = (Image) t.getTransferData(flavors[0]);
    ImageIcon icon = new ImageIcon(image);
    label.setIcon(icon);
    return true;
    } catch (UnsupportedFlavorException ignored) {
    } catch (IOException ignored) {
    }
    }
    }
    return false;
    }

    // Transferable
    public Object getTransferData(DataFlavor flavor) {
    if (isDataFlavorSupported(flavor)) {
    return image;
    }
    return null;
    }

    public DataFlavor[] getTransferDataFlavors() {
    return flavors;
    }

    public boolean isDataFlavorSupported(DataFlavor flavor) {
    return flavor.equals(DataFlavor.imageFlavor);
    }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Copier une image dans un fichier word
    Par Vince_93700 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 09/05/2007, 09h12
  2. Copier une image dans un dossier
    Par L'aigle de Carthage dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/05/2007, 19h54
  3. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  4. Ouvrir une image dans le visioneur windows a partir d'access
    Par doudoustephane dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/06/2006, 12h15
  5. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo