Java 클립보드에 텍스트 복사

Mohd Mohtashim Nawaz 2023년10월12일
  1. Java의 ToolkitClipboard 클래스를 사용하여 클립보드 인스턴스 생성
  2. Java의 StringSelection 클래스를 사용하여 클립보드에 문자열 복사
  3. JavaFX 응용 프로그램에서 클립보드에 텍스트 복사
Java 클립보드에 텍스트 복사

이 기사에서는 Java 애플리케이션에서 클립보드로 텍스트를 복사하는 방법에 대해 설명합니다.

Java는 Java 애플리케이션에 텍스트를 표시하는 여러 요소를 제공합니다. 다른 컴퓨터 응용 프로그램으로 내보내려면 여러 번 텍스트를 클립보드에 복사해야 합니다.

Java의 ToolkitClipboard 클래스를 사용하여 클립보드 인스턴스 생성

Java는 Java에서 GUI 기반 기능을 구현하는 다양한 방법을 포함하는 Toolkit이라는 수퍼 클래스를 제공합니다.

클래스에는 Toolkit 클래스의 기본 인스턴스를 반환하는 getDefaultToolkit()이라는 정적 메서드가 있습니다. 방법의 정의는 아래에 나와 있습니다.

public static Toolkit getDefaultToolkit()

Toolkit의 기본 인스턴스를 가져오면 이를 사용하여 getSystemClipboard() 메서드를 추가로 호출할 수 있습니다. 이 추상 메서드는 시스템 클립보드의 싱글톤 인스턴스를 반환합니다.

getSystemClipboard() 메소드의 정의는 다음과 같습니다.

public abstract Clipboard getSystemClipboard()
                                      throws HeadlessException

이 메서드는 애플리케이션의 헤드리스 플래그를 나타내는 HeadlessException이라는 예외를 throw합니다.

클립보드 인스턴스를 가져오면 텍스트를 클립보드에 복사할 준비가 된 것입니다.

Java의 StringSelection 클래스를 사용하여 클립보드에 문자열 복사

클립보드의 인스턴스를 가져온 후 다음 작업은 문자열을 클립보드에 복사할 수 있도록 준비하는 것입니다. StringSelection 클래스를 사용하여 그렇게 할 수 있습니다.

StringSelection 클래스는 문자열을 단순 텍스트 형식으로 전송하는 기능을 구현합니다. 이 클래스는 java.awt.datatransfer 클래스의 하위 클래스입니다.

StringSelection 클래스의 인스턴스를 생성하려면 복사할 문자열을 클래스 생성자에 전달해야 합니다.

마지막으로 인스턴스가 준비되면 문자열을 시스템 클립보드에 복사하는 클립보드의 setContent() 메서드를 호출할 수 있습니다. setContent() 메소드는 두 개의 인수를 허용합니다.

  • 첫 번째 인수는 이 경우 StringSelection 클래스 인스턴스인 양도 가능한 인스턴스입니다.
  • 두 번째 인수는 클립보드의 소유자를 나타냅니다.

코드를 보자.

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

JavaFX 응용 프로그램에서 클립보드에 텍스트 복사

JavaFX 애플리케이션은 AWT 및 Swing 애플리케이션과 약간 다릅니다. JavaFX 응용 프로그램으로 작업하는 동안 HTML 콘텐츠를 표시하기 위해 약간의 변경으로 유사한 기능을 사용할 수 있습니다.

콘텐츠를 클립보드에 직접 넣는 대신 콘텐츠를 ClipboardContent 인스턴스로 설정할 수 있습니다. 콘텐츠가 인스턴스에 푸시되면 해당 인스턴스를 클립보드에 직접 추가할 수 있습니다.

마찬가지로 컨텐츠를 읽는 동안 DataFormat.HTML 플래그를 사용하여 일반 텍스트와 HTML 컨텐츠를 구별할 수 있습니다.

코드의 예를 살펴보겠습니다.

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

이것이 바로 Java 애플리케이션에서 시스템 클립보드로 콘텐츠를 복사하는 것입니다.

관련 문장 - Java JavaFX