Voglio copiare il testo dalla JTable
cella di un negli Appunti, rendendolo disponibile per essere incollato in altri programmi come Microsoft Word. Ho il testo dal JTable
, ma non sono sicuro su come copiarlo negli appunti.
Voglio copiare il testo dalla JTable
cella di un negli Appunti, rendendolo disponibile per essere incollato in altri programmi come Microsoft Word. Ho il testo dal JTable
, ma non sono sicuro su come copiarlo negli appunti.
Risposte:
Questo funziona per me ed è abbastanza semplice:
Importa questi:
import java.awt.datatransfer.StringSelection;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
E quindi inserisci questo frammento di codice dove desideri modificare gli Appunti:
String myString = "This text will be copied into clipboard";
StringSelection stringSelection = new StringSelection(myString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
stringSelection
anche il secondo argomento setContents(..)
, rendendolo il ClipboardOwner
, come nella risposta collegata, non abbia alcun significato: guardando la fonte , l'unico metodo ClipboardOwner
che implementa, vale a dire lostOwnership(..)
, è vuoto. Quindi, il secondo argomento sembra essere un callback completamente opzionale.
(-> (java.awt.Toolkit/getDefaultToolkit) .getSystemClipboard (.setContents (java.awt.datatransfer.StringSelection. "test") nil))
Questa è la risposta accettata scritta in modo decorativo:
Toolkit.getDefaultToolkit()
.getSystemClipboard()
.setContents(
new StringSelection(txtMySQLScript.getText()),
null
);
La seguente classe consente di copiare / incollare una stringa negli / dagli appunti.
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import static java.awt.event.KeyEvent.*;
import static org.apache.commons.lang3.SystemUtils.IS_OS_MAC;
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();
int controlKey = IS_OS_MAC ? VK_META : VK_CONTROL;
robot.keyPress(controlKey);
robot.keyPress(VK_V);
robot.keyRelease(controlKey);
robot.keyRelease(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();
return defaultToolkit.getSystemClipboard();
}
}
OS X
meglio nel caso in cui non
VK_CONTROL
per VK_META
se è MacOS.
Ho trovato un modo migliore per farlo in modo da poter ottenere un input da una txtbox o avere qualcosa da generare in quella casella di testo ed essere in grado di fare clic su un pulsante per farlo.!
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
Per applicazioni basate su JavaFx .
//returns System Clipboard
final Clipboard clipboard = Clipboard.getSystemClipboard();
// ClipboardContent provides flexibility to store data in different formats
final ClipboardContent content = new ClipboardContent();
content.putString("Some text");
content.putHtml("<b>Some</b> text");
//this will be replaced by previous putString
content.putString("Some different text");
//set the content to clipboard
clipboard.setContent(content);
// validate before retrieving it
if(clipboard.hasContent(DataFormat.HTML)){
System.out.println(clipboard.getHtml());
}
if(clipboard.hasString()){
System.out.println(clipboard.getString());
}
ClipboardContent può salvare più dati in diversi formati di dati come (html, url, testo normale, immagine).
Per ulteriori informazioni consultare la documentazione ufficiale