我正在研究JavaFX应用程序,我想支持在X11环境中通过鼠标中键粘贴文本。
有没有办法在Java / JavaFX中访问X11剪贴板的内容?
答案 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();
重要的注意事项是值Selection
和PRIMARY
,就像您这样写:
clipboard = new XClipboard("System", "CLIPBOARD");
您将改为阅读系统剪贴板。