我正在开发一个JavaFX应用程序,希望支持在X11环境下通过中键粘贴文本。
有没有一种方法可以在Java/JavaFX中访问X11剪贴板的内容?
访问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");
根据https://bugs.openjdk.java.net/browse/JDK-8088117,在JavaFX中无法访问Selection。
错误报告
在SUSE11上使用Java8u45的JavaFX-8,没有使用鼠标选择或单击滚动条进行复制/粘贴的可能性。请查看此处的详细信息:https://dev59.com/M4rda4cB1Zd3GeqPMnVB
回答
将优先级降低到P4。我注意到这更像是未实现的功能而不是错误(它从未在FX中得到支持)。我们将在JDK 9中考虑它。 解决方法:使用复制/粘贴(CTRL-C / CTRL-V)
javafx.scene.input.Clipboard
有什么问题吗?它代表了操作系统的剪贴板,在其中可以进行剪切、复制和粘贴等操作。 - MadProgrammersun.awt.X11.XSelection
。 - n. m.