如何从JavaFX应用程序中读取X11剪贴板?

时间:2014-02-18 04:16:10

标签: java javafx clipboard x11

我正在研究JavaFX应用程序,我想支持在X11环境中通过鼠标中键粘贴文本。

有没有办法在Java / JavaFX中访问X11剪贴板的内容?

2 个答案:

答案 0 :(得分:1)

根据这个 https://bugs.openjdk.java.net/browse/JDK-8088117无法使用JavaFX访问Selection。

错误报告

  

在SUSE11上使用带有Java8u45的JavaFX-8,无法使用鼠标选择或使用滚动上的单击进行复制/粘贴。详情请见http://stackoverflow.com/questions/30032290/javafx-mouse-clipboard-does-not-work-in-unix

答案

  

将优先级降低到P4。我注意到这更像是一个未实现的功能而不是一个bug(它从未在FX中得到支持)。我们将在JDK 9中查看它。   解决方法:使用复制/粘贴(CTRL-C / CTRL-V)

答案 1 :(得分:1)

要访问X11选择剪贴板:

必填导入:

import sun.awt.X11.XClipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;

代码:

XClipboard xClipboard = new XClipboard("Selection", "PRIMARY");
// Set value:
xClipboard.setContents(new StringSelection("Hello"), null);
// Read value:
String stored = xClipboard.getData(DataFlavor.stringFlavor).toString();

重要的注意事项是值SelectionPRIMARY,就像您这样写:

clipboard = new XClipboard("System", "CLIPBOARD");

您将改为阅读系统剪贴板。