Metnin bir JTablehücresinden panoya kopyalamak ve Microsoft Word gibi diğer programlara yapıştırılabilmesini sağlamak istiyorum. Metin var JTable, ama panoya kopyalamak nasıl emin değilim.
Metnin bir JTablehücresinden panoya kopyalamak ve Microsoft Word gibi diğer programlara yapıştırılabilmesini sağlamak istiyorum. Metin var JTable, ama panoya kopyalamak nasıl emin değilim.
Yanıtlar:
Bu benim için çalışıyor ve oldukça basit:
Bunları içe aktarın:
import java.awt.datatransfer.StringSelection;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
Ardından, bu kod snippet'ini panoyu değiştirmek istediğiniz yere yerleştirin:
String myString = "This text will be copied into clipboard";
StringSelection stringSelection = new StringSelection(myString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
stringSelectionİkinci argüman olarak setContents(..)da geçmenin ClipboardOwner, bağlantılı cevapta olduğu gibi bunu yapmanın bir önemi yok gibi görünüyor: kaynağa bakmak, ClipboardOwneruyguladığı tek yöntem , yani lostOwnership(..)boş. Yani, ikinci argüman tamamen isteğe bağlı bir geri arama gibi görünüyor.
(-> (java.awt.Toolkit/getDefaultToolkit) .getSystemClipboard (.setContents (java.awt.datatransfer.StringSelection. "test") nil))
Dekoratif bir şekilde yazılmış kabul edilen cevap budur:
Toolkit.getDefaultToolkit()
.getSystemClipboard()
.setContents(
new StringSelection(txtMySQLScript.getText()),
null
);
Aşağıdaki sınıf bir String'i panodan kopyalayıp yapıştırmanıza izin verir.
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 Xdüzgün çalışmadığı takdirde daha iyi desteklemek için bir düzenleme önermek için çekinmeyin
VK_CONTROLiçin VK_METAo MacOS buysa.
Bunu yapmanın daha iyi bir yolunu buldum, böylece bir txtbox'tan bir girdi alabilir veya o metin kutusunda bir şey oluşturulabilir ve bunu yapmak için bir düğmeyi tıklayabilirsiniz.
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
İçin JavaFX tabanlı uygulamalar.
//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 , birden çok veriyi (html, url, düz metin, resim) gibi çeşitli veri biçimlerinde kaydedebilir.
Daha fazla bilgi için resmi belgelere bakın