Publié le 26/05/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
1 commentaires

Presse-papier: copier et coller du texte

Comment utiliser le clipboard (le presse papier) du système d'exploitation pour échanger des données entre votre application Java et autres applications. Dans certains coposants comme par exemple le JTextArea, les fonctions copier, couper et coller sont incluses. Dans l'article ci-dessous, nous allons voir comment copier et coller du texte vers le presse-papier à partir d'une application JAVA

Copier et coller du texte vers le Clipboard

Pour fransférer du texte avec l'objet Clipboard de Java, la class comporte deux fonctions:
getAsText: Coller du texte à partir du presse-papier (ctrl+v)
setAsText: Copier du texte vers le presse-papier (ctrl+c)

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 * Presse-papier : Copier / coller du texte
 * http://www.fobec.com/java/912/presse-papier-copier-coller-texte.html
 * @author Fobec 2010
 */
public class ClipboardTransfert {
 
    /**
     * Copier du texte vers le presse-papier
     * @param text String texte à copier
     */
    public static void setAsText(String text) {
        if (text != null) {
            StringSelection contents = new StringSelection(text);
            Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            clipboard.setContents(contents, null);
        }
    }
 
    /**
     * Coller du texte à partir du presse-papier
     * @return String texte contenu ou vide si le format est différent de string
     */
    public static String getAsText() {
        String clipText = "";
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable contents = clipboard.getContents(null);
        if ((contents != null) && contents.isDataFlavorSupported(DataFlavor.stringFlavor)) {
            try {
                clipText = (String) contents.getTransferData(DataFlavor.stringFlavor);
            } catch (UnsupportedFlavorException ex) {
                Logger.getLogger(ClipboardTransfert.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(ClipboardTransfert.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return clipText;
    }    
}

Exemple dans un composant JEditField


//Coller dans un jEditField
jEditField.setText(ClipboardTransfert.getAsText());
 
//Copier depuis un jEditField
ClipboardTransfert.setAsText(jEditField.getText());


La class ClipboardTransfert peut etre utilisée dans tous les composants JAVA pour copier ou coller du texte vers le presse-papier. Pour cela, appeler les fonctions à partir du PopupMenu ou à partir d'un bouton pour transférer du texte vers le Clipboard.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar angelofchaos

Publié par angelofchaos

le 26/01/2012 à 10:58:36

Marche très bien , merci beaucoup :)

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
26/05/2010
Visualisation
vu 2575 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par hisy dans java

Merci pour le script mais si un champ text contient un ";" ...

Publié par space dans java

peut on avoir un meme code pour linux

Publié par Amal dans tuto

pour moi j'ai créé une liste déroulante en liaisant avec la base de donnée déja existant mais la valeur sélectionné ne peut pas etre afficher jamais et...

Publié par Kal747 dans php5

Merci pour l'info !

Publié par Berenger dans java

Bonjour Mr Foebec je suis vraiment très content de cette réponse vous êtes simplement génial. quand je pense au nombre de jour que ça m'a pris et le temps que j'ai pe...