Saya ingin menyalin teks dari JTable
sel a ke clipboard, membuatnya tersedia untuk disisipkan ke program lain seperti Microsoft Word. Saya memiliki teks dari JTable
, tetapi saya tidak yakin bagaimana cara menyalinnya ke clipboard.
149
stringSelection
sebagai argumen ke-2setContents(..)
juga, menjadikannyaClipboardOwner
, seperti dalam jawaban terkait, tidak memiliki signifikansi: melihat sumbernya , satu-satunya metodeClipboardOwner
yang diimplementasikannya, yaitu,lostOwnership(..)
kosong. Jadi, argumen ke-2 tampaknya menjadi callback yang sepenuhnya opsional.(-> (java.awt.Toolkit/getDefaultToolkit) .getSystemClipboard (.setContents (java.awt.datatransfer.StringSelection. "test") nil))
Kelas berikut memungkinkan Anda untuk menyalin / menempelkan String ke / dari papan klip.
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(); } }
sumber
OS X
lebih baik jika tidak berfungsi dengan benarVK_CONTROL
untukVK_META
apakah itu MacOS.Ini adalah jawaban yang diterima yang ditulis dengan cara dekoratif:
Toolkit.getDefaultToolkit() .getSystemClipboard() .setContents( new StringSelection(txtMySQLScript.getText()), null );
sumber
Untuk aplikasi berbasis 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 dapat menyimpan banyak data dalam beberapa format data seperti (html, url, teks biasa, gambar).
Untuk informasi lebih lanjut lihat dokumentasi resmi
sumber
Saya menemukan cara yang lebih baik untuk melakukannya sehingga Anda bisa mendapatkan masukan dari txtbox atau membuat sesuatu dibuat di kotak teks itu dan dapat mengklik tombol untuk melakukannya.!
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
sumber