Inicio > Java > Como leer/escribir en el portapapeles (clipboard) con Java

Como leer/escribir en el portapapeles (clipboard) con Java

Hace algún tiempo pensé que sería interesante tener un gestor propio del portapapeles. Siempre que copiamos algo el portapapeles nos machaca lo anterior y a veces es interesante tener un programa que gestione todo eso. Ya se que existen muchos programas que lo hacen, pero cuando las cosas las haces tu sabes las limitaciones que tiene y puedes modificarlas/mejorarlas a tu gusto.
Lo que pego abajo es una clase que se comunica con el portapapeles pudiendo leer y escribir cadenas en él.
Aunque no lo he tratado supongo que esto será extensible a ficheros sin demasiada complicación.

Estuve mirando la implementación del listener del clipboard pero no se porqué no lanzaba el evento al copiar algo nuevo. Si tengo tiempo volveré a mirar a ver si consigo hacerlo funcionar (trabajaba sobre Windows en ese momento)

import java.awt.Toolkit;
import java.awt.datatransfer.*;
import java.io.IOException;

public class BoardListener implements ClipboardOwner
{
	// Método que recupera una cadena del portapapeles.
	public String getClipboard()
 	{
 		// Obtenemos el contenido del portapapeles del sistema.
 		Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
		try
 		{
			// Comprobamos que la información sea de tipo cadena, lo recuperamos y lo devolvemos.
 			if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor))
 			{
 				String text = (String) t.getTransferData(DataFlavor.stringFlavor);
 				return text;
 			}
 		}
 		catch (UnsupportedFlavorException e)
 		{
 			e.printStackTrace();
 		}
 		catch (IOException e)
 		{
 			e.printStackTrace();
 		}
		// Si lo copiado no es un texto, devolvemos null
 		return null;
 	}

	// Método que inserta en el portapapeles una cadena.
	 public void setClipboard(String str)
 	{
 		StringSelection ss = new StringSelection(str);
 		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, this);
	 }

	// Necesario para poder implementar la interfaz ClipboardOwner. Para nosotros no tendrá uso, pero es obligatorio "implementarlo".
	 @Override
	 public void lostOwnership(Clipboard clipboard, Transferable contents)
 	{
		// TODO Auto-generated method stub
	}
}
Anuncios
Categorías:Java
  1. Gabriel
    01/09/2016 en 9:59 PM

    Gracias 🙂 lo usaré 😉

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: