[Métodos] Copiar y pegar desde el portapapeles en java

Para poder copiar y pegar desde el portapapeles del sistema con java vamos a hacer uso de de las siguientes clases e interfaz, por lo cual va a ser necesario importarlas:





Copiar



Procedimiento


Lo primero que debemos hacer para copiar del portapapeles es acceder al método de clase de toolkit getDefaultToolkit:

Luego debemos llamar a otro método de esta clase, getSystemClipboard:


Ahora usaremos un método de la clase ClipBoard que devuelve una instancia de la clase Transferable:


Proximo paso es usar el método de la interfaz transferable, getTransferData:


Por ultimo, como me resulta mas facil, casteo el Objet a String




Toolkit tool = Toolkit.getDefaultToolkit();
Clipboard clip = tool.getSystemClipboard();
Transferable trans = clip.getContents(null);
Object objeto = trans.getTransferData(DataFlavor.stringFlavor);
String str = (String) objeto;



De igual manera podemos ahorranos unos pasos, pero para mi es menos claro como se suceden las cosas realmente, en la practica no importará como se llegue al resultado.

Pegar



Procedimiento


Primer paso (no tan obvio) debemos tener nuestro String o cualquiera objeto que podamos llevarlo a string para pasarselo por parámetro del constructor del StringSelection

Ahora creamos el objeto de la clase StringSelection desde su único constructor:
Lo siguiente, es repetir los pasos:
  • crear el kit de herramientas por defecto del sistemas
  • este objeto llamará al método getSystemClipBoard() y devolvera un clipBoard
  • este nuevo objeto quien llamará al método set para modificar el portapales:
Será el objeto de la clase ClipBoard que lamé a su método sin retorno pasando el StringSelection como parametro:
  • public void setContents(Transferable contents, ClipboardOwner owner)
    • Establece el contenido actual del portapapeles al objeto transferable especificado y registra el dueño del portapapeles como el propietario de los nuevos contenidos.
    • Parámetros:
    • Transferable contents - El contenido del objeto transferibles que representa el contenido del portapapeles.
      ClipBoardOwner owner - el objeto que posee el contenido del portapapeles, o null si no es nadie.




String aPegar = "Este es el texto a pegar en el portapapeles";
StringSelection ss = new StringSelection(aPegar);
Toolkit tool = Toolkit.getDefaultToolkit();
Clipboard clip = tool.getSystemClipboard();
clip.setContents(ss, null);




public void pegarPortapapeles(String pegado){
    StringSelection ss = new StringSelection(pegado);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);  
}
public String copiarPortapapeles() throws UnsupportedFlavorException, IOException {
    Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
    String copiado = (String) t.getTransferData(DataFlavor.stringFlavor);
    return copiado;
}

No hay comentarios:

Publicar un comentario