Java Copiar texto al portapapeles
-
Cree una instancia de portapapeles usando la clase
Toolkit
yClipboard
en Java -
Copie la cadena al portapapeles usando la clase
StringSelection
en Java - Copiar texto al portapapeles en aplicaciones JavaFX
Este artículo trata sobre cómo copiar el texto de una aplicación Java al portapapeles.
Java proporciona varios elementos que muestran el texto en una aplicación Java. Varias veces, el texto debe copiarse en el portapapeles para exportarlo a otras aplicaciones informáticas.
Cree una instancia de portapapeles usando la clase Toolkit
y Clipboard
en Java
Java proporciona una superclase llamada Toolkit
que contiene una variedad de métodos para implementar las funcionalidades basadas en GUI en Java.
La clase tiene un método estático llamado getDefaultToolkit()
que devuelve una instancia predeterminada de la clase Toolkit
. La definición del método se da a continuación.
public static Toolkit getDefaultToolkit()
Una vez que obtenga la instancia predeterminada de Toolkit
, puede usarla para invocar más el método getSystemClipboard()
. Este método abstracto devuelve una instancia única del portapapeles del sistema.
La definición del método getSystemClipboard()
se da a continuación.
public abstract Clipboard getSystemClipboard()
throws HeadlessException
El método lanza una excepción llamada HeadlessException
que representa la bandera sin cabeza en la aplicación.
Una vez que obtenga la instancia del portapapeles, estará listo para copiar el texto en el portapapeles.
Copie la cadena al portapapeles usando la clase StringSelection
en Java
Después de obtener la instancia del portapapeles, la siguiente tarea es hacer que la cadena esté lista para copiarse en el portapapeles. Puede hacerlo utilizando la clase StringSelection
.
La clase StringSelection
implementa la funcionalidad para transferir una cadena en formato de texto simple. Esta clase es una subclase de la clase java.awt.datatransfer
.
Para crear una instancia de la clase StringSelection
, debe pasar la cadena que se copiará al constructor de la clase.
Finalmente, cuando la instancia esté lista, puede llamar al método setContent()
del portapapeles que copia su cadena en el portapapeles del sistema. El método setContent()
acepta dos argumentos.
- El primer argumento es una instancia transferible que, en nuestro caso, es la instancia de la clase
StringSelection
. - El segundo argumento indica el propietario del portapapeles.
Veamos el código.
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);
}
}
Copiar texto al portapapeles en aplicaciones JavaFX
Las aplicaciones JavaFX son un poco diferentes a las aplicaciones AWT y Swing. Puede usar una funcionalidad similar con un poco de cambio para mostrar el contenido HTML mientras trabaja con aplicaciones JavaFX.
En lugar de colocar el contenido directamente en el portapapeles, puede establecer el contenido en la instancia ClipboardContent
. Una vez que el contenido se envía a la instancia, puede agregar directamente esa instancia al portapapeles.
De manera similar, mientras lee el contenido, puede diferenciar entre el texto normal y el contenido HTML usando la bandera DataFormat.HTML
.
Veamos el ejemplo en código.
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());
}
}
Se trata de copiar el contenido de una aplicación Java al portapapeles del sistema.