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.
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.
Jawaban:
Ini bekerja untuk saya dan cukup sederhana:
Impor ini:
import java.awt.datatransfer.StringSelection;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
Dan kemudian letakkan cuplikan kode ini di mana pun Anda ingin mengubah papan klip:
String myString = "This text will be copied into clipboard";
StringSelection stringSelection = new StringSelection(myString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
stringSelection
sebagai argumen ke-2 setContents(..)
juga, menjadikannya ClipboardOwner
, seperti dalam jawaban terkait, tidak memiliki signifikansi: melihat sumbernya , satu-satunya metode ClipboardOwner
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();
}
}
OS X
lebih baik jika tidak berfungsi dengan benar
VK_CONTROL
untuk VK_META
apakah itu MacOS.
Ini adalah jawaban yang diterima yang ditulis dengan cara dekoratif:
Toolkit.getDefaultToolkit()
.getSystemClipboard()
.setContents(
new StringSelection(txtMySQLScript.getText()),
null
);
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
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