Java Text in die Zwischenablage kopieren

Mohd Mohtashim Nawaz 12 Oktober 2023
  1. Erstellen Sie eine Instanz der Zwischenablage mit den Klassen Toolkit und Clipboard in Java
  2. String in die Zwischenablage kopieren mit der Klasse StringSelection in Java
  3. Kopieren Sie Text in die Zwischenablage in JavaFX-Anwendungen
Java Text in die Zwischenablage kopieren

Dieser Artikel beschreibt das Kopieren des Textes aus einer Java-Anwendung in die Zwischenablage.

Java stellt mehrere Elemente bereit, die den Text in einer Java-Anwendung anzeigen. Der Text muss mehrmals in die Zwischenablage kopiert werden, um ihn in andere Computeranwendungen zu exportieren.

Erstellen Sie eine Instanz der Zwischenablage mit den Klassen Toolkit und Clipboard in Java

Java bietet eine Oberklasse namens Toolkit, die eine Vielzahl von Methoden enthält, um die GUI-basierten Funktionalitäten in Java zu implementieren.

Die Klasse hat eine statische Methode namens getDefaultToolkit(), die eine Standardinstanz der Klasse Toolkit zurückgibt. Die Definition der Methode ist unten angegeben.

public static Toolkit getDefaultToolkit()

Sobald Sie die Standardinstanz von Toolkit erhalten haben, können Sie damit die Methode getSystemClipboard() weiter aufrufen. Diese abstrakte Methode gibt eine Singleton-Instanz der Systemzwischenablage zurück.

Die Definition der Methode getSystemClipboard() ist unten angegeben.

public abstract Clipboard getSystemClipboard()
                                      throws HeadlessException

Die Methode löst eine Ausnahme namens HeadlessException aus, die das Headless-Flag in der Anwendung darstellt.

Sobald Sie die Zwischenablage erhalten haben, können Sie den Text in die Zwischenablage kopieren.

String in die Zwischenablage kopieren mit der Klasse StringSelection in Java

Nachdem Sie die Instanz der Zwischenablage erhalten haben, besteht die nächste Aufgabe darin, die Zeichenfolge zum Kopieren in die Zwischenablage bereit zu machen. Sie können dies tun, indem Sie die Klasse StringSelection verwenden.

Die Klasse StringSelection implementiert die Funktionalität, um einen String im einfachen Textformat zu übertragen. Diese Klasse ist eine Unterklasse der Klasse java.awt.datatransfer.

Um eine Instanz der Klasse StringSelection zu erstellen, müssen Sie den zu kopierenden String an den Klassenkonstruktor übergeben.

Wenn die Instanz fertig ist, können Sie schließlich die Methode setContent() der Zwischenablage aufrufen, die Ihren String in die Zwischenablage des Systems kopiert. Die Methode setContent() akzeptiert zwei Argumente.

  • Das erste Argument ist eine übertragbare Instanz, in unserem Fall die Klasseninstanz StringSelection.
  • Das zweite Argument gibt den Eigentümer der Zwischenablage an.

Lassen Sie uns den Code sehen.

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);
  }
}

Kopieren Sie Text in die Zwischenablage in JavaFX-Anwendungen

JavaFX-Anwendungen unterscheiden sich ein wenig von AWT- und Swing-Anwendungen. Sie können eine ähnliche Funktionalität mit einer kleinen Änderung verwenden, um den HTML-Inhalt anzuzeigen, während Sie mit JavaFX-Anwendungen arbeiten.

Anstatt den Inhalt direkt in die Zwischenablage zu legen, können Sie den Inhalt auf die Instanz ClipboardContent setzen. Sobald der Inhalt in die Instanz gepusht wurde, können Sie diese Instanz direkt zur Zwischenablage hinzufügen.

Ebenso können Sie beim Lesen des Inhalts mit dem Flag DataFormat.HTML zwischen dem normalen Text und dem HTML-Inhalt unterscheiden.

Sehen wir uns das Beispiel im Code an.

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());
  }
}

Dabei geht es darum, den Inhalt einer Java-Anwendung in die Zwischenablage des Systems zu kopieren.

Verwandter Artikel - Java JavaFX