Java Copier le texte dans le presse-papiers

Mohd Mohtashim Nawaz 12 octobre 2023
  1. Créer une instance de presse-papiers à l’aide de la classe Toolkit et Clipboard en Java
  2. Copier la chaîne dans le presse-papiers à l’aide de la classe StringSelection en Java
  3. Copier du texte dans le presse-papiers dans les applications JavaFX
Java Copier le texte dans le presse-papiers

Cet article traite de la copie du texte d’une application Java vers le presse-papiers.

Java fournit plusieurs éléments qui affichent le texte dans une application Java. Plusieurs fois, le texte doit être copié dans le presse-papiers pour être exporté vers d’autres applications informatiques.

Créer une instance de presse-papiers à l’aide de la classe Toolkit et Clipboard en Java

Java fournit une superclasse nommée Toolkit qui contient une variété de méthodes pour implémenter les fonctionnalités basées sur l’interface graphique en Java.

La classe a une méthode statique nommée getDefaultToolkit() qui renvoie une instance par défaut de la classe Toolkit. La définition de la méthode est donnée ci-dessous.

public static Toolkit getDefaultToolkit()

Une fois que vous obtenez l’instance par défaut de Toolkit, vous pouvez l’utiliser pour invoquer la méthode getSystemClipboard() plus loin. Cette méthode abstraite renvoie une instance singleton du presse-papiers système.

La définition de la méthode getSystemClipboard() est donnée ci-dessous.

public abstract Clipboard getSystemClipboard()
                                      throws HeadlessException

La méthode lève une exception nommée HeadlessException qui représente le drapeau sans tête dans l’application.

Une fois que vous obtenez l’instance du presse-papiers, vous êtes prêt à copier le texte dans le presse-papiers.

Copier la chaîne dans le presse-papiers à l’aide de la classe StringSelection en Java

Après avoir obtenu l’instance du presse-papiers, la tâche suivante consiste à préparer la chaîne à être copiée dans le presse-papiers. Vous pouvez le faire en utilisant la classe StringSelection.

La classe StringSelection implémente la fonctionnalité de transfert d’une chaîne au format texte simple. Cette classe est une sous-classe de la classe java.awt.datatransfer.

Pour créer une instance de la classe StringSelection, vous devez passer la chaîne à copier au constructeur de la classe.

Enfin, lorsque l’instance est prête, vous pouvez appeler la méthode setContent() du presse-papiers qui copie votre chaîne dans le presse-papiers du système. La méthode setContent() accepte deux arguments.

  • Le premier argument est une instance transférable qui, dans notre cas, est l’instance de la classe StringSelection.
  • Le deuxième argument désigne le propriétaire du presse-papiers.

Voyons le code.

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;

public class CopyToClipBoard {
  public static void main(String[] args) {
    String str = "To be copied";
    Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection strSel = new StringSelection(str);

    cb.setContents(strSel, null);
  }
}

Copier du texte dans le presse-papiers dans les applications JavaFX

Les applications JavaFX sont un peu différentes des applications AWT et Swing. Vous pouvez utiliser une fonctionnalité similaire avec quelques modifications pour afficher le contenu HTML tout en travaillant avec des applications JavaFX.

Au lieu de placer le contenu directement dans le presse-papiers, vous pouvez définir le contenu sur l’instance ClipboardContent. Une fois le contenu envoyé à l’instance, vous pouvez directement ajouter cette instance au presse-papiers.

De même, lors de la lecture du contenu, vous pouvez différencier le texte normal du contenu HTML à l’aide du drapeau DataFormat.HTML.

Voyons l’exemple dans le code.

public class CopyToClipBoard {
  Clipboard cb = Clipboard.getSystemClipboard();

  ClipboardContent ct = new ClipboardContent();

  ct.putString("Text to be copied");
  ct.putHtml("<b>HTML Text</b>");

  cb.setContent(ct);

  if (cb.hasContent(DataFormat.HTML)) {
    System.out.println(cb.getHtml());
  }
  if (cb.hasString()) {
    System.out.println(cb.getString());
  }
}

Il s’agit de copier le contenu d’une application Java dans le presse-papiers du système.

Article connexe - Java JavaFX