Obtener texto legible solo desde el portapapeles

Ya sé cómo obtener texto sin formato del portapapeles en Java, pero a veces el texto está codificado en algún extraño DataFlavor , como cuando se copia desde Microsoft Word o desde un sitio web o incluso desde el código fuente de Eclipse.

¿Cómo extraer texto simple puro de estos DataFlavor s?

 import java.awt.HeadlessException; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; String data = (String) Toolkit.getDefaultToolkit() .getSystemClipboard().getData(DataFlavor.stringFlavor); 

con el método getData () y el stringFlavor, debería obtener texto sin formato del portapapeles.

si hay texto raro en el portapapeles, creo que esto debería ser un problema del progtwig que coloca los datos en el portapapeles.

Puede usar el siguiente método para obtener texto del portapapeles en Java:

 public String getClipBoard(){ try { return (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor); } catch (HeadlessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedFlavorException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; } 

Primero, no he trabajado con el portapapeles, pero esto parece interesante

De http://docstore.mik.ua/orelly/java/awt/ch16_01.htm

“Para leer datos del portapapeles, un progtwig llama al método Transferible.getTransferData (). Si los datos están representados por un DataFlavor que no corresponde a una clase Java (por ejemplo, plainTextFlavor), getTransferData () devuelve un InputStream para para leer los datos de “.

Entonces, si le das una clase que no se corresponde, obtienes el InputStream y luego puedes leer el texto “puro” del InputStream tú mismo.