quiero copiar texto de un celular JTable
's en el portapapeles, haciendo que esté disponible a pegar en otros programas como Microsoft Word. Tengo el texto del JTable
, pero no estoy seguro de cómo copiarlo en el portapapeles.Copia de texto al portapapeles utilizando Java
Respuesta
Esto funciona para mí y es bastante simple:
importar estos:
import java.awt.datatransfer.*;
import java.awt.Toolkit;
y luego poner este fragmento de código donde desea alterar el portapapeles:
String myString = "This text will be copied into clipboard when running this code!";
StringSelection stringSelection = new StringSelection(myString);
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
clpbrd.setContents(stringSelection, null);
Lo he probado y funciona. Sin embargo, no estoy seguro si existen algunos defectos de 'buena práctica', ¡pero resolverán tu problema!
LH
La siguiente clase le permite copiar/pegar una cadena a/desde el portapapeles.
import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.KeyEvent;
import java.io.IOException;
public class SystemClipboard
{
public static void copy(String text)
{
Clipboard clipboard = getSystemClipboard();
clipboard.setContents(new StringSelection(text), null);
}
public static void paste() throws AWTException
{
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
}
public static String get() throws Exception
{
Clipboard systemClipboard = getSystemClipboard();
DataFlavor dataFlavor = DataFlavor.stringFlavor;
if (systemClipboard.isDataFlavorAvailable(dataFlavor))
{
Object text = systemClipboard.getData(dataFlavor);
return (String) text;
}
return null;
}
private static Clipboard getSystemClipboard()
{
Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
Clipboard systemClipboard = defaultToolkit.getSystemClipboard();
return systemClipboard;
}
}
Puede que necesite un poco de lógica para pegar en OS X ya que es especial. –
Esta es la respuesta aceptada por escrito de una manera decorativa:
Toolkit.getDefaultToolkit()
.getSystemClipboard()
.setContents(
new StringSelection(txtMySQLScript.getText()),
null
);
he encontrado una mejor forma de hacerlo para que pueda obtener una entrada de un txtbox o tener algo generarse en ese texto cuadro y poder hacer clic en un botón para hacerlo. ¡Aquí está el código para copiar al portapapeles funcionando (2017/2018)!
import java.awt.datatransfer.*;
import java.awt.Toolkit;
private void /* Action performed when the copy to clipboard button is clicked */ {
String ctc = txtCommand.getText().toString();
StringSelection stringSelection = new StringSelection(ctc);
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
clpbrd.setContents(stringSelection, null);
}
// txtCommand is the variable of a text box
Espero que esto ayude! – ElementCodez
¿Qué quiere decir con "2017/2018"? Una versión particular de Java? ¿Qué versión * hiciste * que usas? –
- 1. JavaFX TableView copia al portapapeles
- 2. copia en el portapapeles en Java
- 3. ¿Copia la imagen al portapapeles desde el navegador en Javascript?
- 4. copia de estudio visual al portapapeles IDE se congela
- 5. Ubuntu> copia del Portapapeles, SSHK
- 6. ¿Cómo puedo configurar el texto para copiar al portapapeles cuando se copia la imagen?
- 7. DataGridView: copia completa en el portapapeles
- 8. ¿Puede Python enviar texto al portapapeles de Mac?
- 9. Selección de toda la tabla/texto para copiar al portapapeles
- 10. Copiar texto desde una ventana CMD de Windows al portapapeles
- 11. cómo copiar contenido de jtable al portapapeles
- 12. Portapapeles Java ¿Propósito del propietario?
- 13. Obtener texto legible solo del portapapeles
- 14. IOS - detectan cuando se copia el usuario al portapapeles - [UIPasteboard generalPasteboard]
- 15. Establecer texto y obtener texto del portapapeles
- 16. Copie las imágenes javascript hechas al portapapeles
- 17. ¿Cómo copiar al portapapeles con GWT?
- 18. Copiar rango al portapapeles
- 19. VIM: anexar al portapapeles
- 20. X11 Obtener texto del Portapapeles
- 21. iPhone Copiar algo al portapapeles a través del código
- 22. shell script salida al portapapeles
- 23. ¿Eliminar línea sin agregar al portapapeles?
- 24. ¿Cómo copiar al portapapeles con X11?
- 25. Copiar contenido de DataGridView al portapapeles
- 26. ¿Cómo coloco algún texto formateado en el Portapapeles?
- 27. Cómo agregar texto automáticamente al texto copiado con JavaScript
- 28. haciendo doble clic en TStaticText en la aplicación Delphi XE2 copia el título en el portapapeles
- 29. Obteniendo fuente HTML o texto enriquecido del portapapeles X
- 30. Copiar al portapapeles en la extensión de Chrome
podemos setContents (propietario) con demasiado http://stackoverflow.com/questions/3591945/copying-to-clipboard-in-java –
@AquariusPower Parece que pasa 'stringSelection' como el segundo argumento 'setContents (..)' también, lo que es el 'ClipboardOwner', como en la respuesta ligado, no tiene importancia: mirando al [fuente] (http://grepcode.com/file/repository.grepcode.com/java /root/jdk/openjdk/8u40-b25/java/awt/datatransfer/StringSelection.java#StringSelection.lostOwnership%28java.awt.datatransfer.Clipboard%2Cjava.awt.datatransfer.Transferable%29), el único método de 'ClipboardOwner 'que implementa, a saber,' lostOwnership (..) ', está vacío. Entonces, el segundo argumento parece ser una devolución de llamada completamente opcional. –
@EvgeniSergeev puede ser útil si ampliamos StringSelection :) –