2011-07-15 21 views

Respuesta

200

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

+1

podemos setContents (propietario) con demasiado http://stackoverflow.com/questions/3591945/copying-to-clipboard-in-java –

+0

@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. –

+0

@EvgeniSergeev puede ser útil si ampliamos StringSelection :) –

10

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; 
    } 
} 
+1

Puede que necesite un poco de lógica para pegar en OS X ya que es especial. –

3

Esta es la respuesta aceptada por escrito de una manera decorativa:

Toolkit.getDefaultToolkit() 
     .getSystemClipboard() 
     .setContents(
       new StringSelection(txtMySQLScript.getText()), 
       null 
     ); 
1

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 
+1

Espero que esto ayude! – ElementCodez

+0

¿Qué quiere decir con "2017/2018"? Una versión particular de Java? ¿Qué versión * hiciste * que usas? –

Cuestiones relacionadas