系统相关
首页 > 系统相关> > 复制到全局剪贴板不适用于Ubuntu中的Java

复制到全局剪贴板不适用于Ubuntu中的Java

作者:互联网

独立应用程序中的以下代码适用于ubuntu:

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

public class ClipboardTest {

    public static void main(String[] args) throws Exception {
        Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();        
        // print the last copied thing
        System.out.println(clipBoard.getContents(null).getTransferData(DataFlavor.stringFlavor));
        StringSelection data = new StringSelection("NOW");
        clipBoard.setContents(data, data);
        // prints NOW
        System.out.println(clipBoard.getContents(null).getTransferData(DataFlavor.stringFlavor));
    }

}

将(Ctrl V)粘贴到不同的应用程序中不会产生任何结果;我期待“现在”.再次调用上面的代码会产生以下异常:

Exception in thread "main" java.awt.datatransfer.UnsupportedFlavorException: Unicode String
    at sun.awt.datatransfer.ClipboardTransferable.getTransferData(ClipboardTransferable.java:160)

作为一个独立的应用程序,这应该在2011 security changes之后工作.通过Ctrl C从JTextField内部复制然后粘贴到其他地方.

使用最新的java7(jdk1.7.0_10)和jdk1.6.0_33在ubuntu 11.04上都没有成功;它是should work并且在Windows 7上使用最新的java7和使用java6_37的mac osx 10.6上的预期工作.还尝试了xubuntu 12.04与那些javas,它在那里不起作用.这是一个linux / ubuntu错误吗?

Related question

解决方法:

我在工作中遇到了与应用程序相同的问题,这是我发现的一篇文章,解释了原因和可能的解决方案.我希望它有所帮助.

Why it happens

Clipboard persistence is a bug that affects many programs under Ubuntu and other X11-based operating systems. Fixing it is a Google Summer of Code 2010 project. Wikipedia has a good overview of the issue. If you want to fix as a user, you can install Parcellite or another clipboard manager. If you want to fix it as a programmer, you can modify your program to conform to the ClipboardManager specification.

X-Window wiki

Using gnome library你可以在剪贴板上调用store方法并修复它.到目前为止,这是唯一值得尝试的东西.还看到了GTK类似的东西,但只是在Eclipse的bug中.

标签:java,ubuntu,swing,awt,copy-paste
来源: https://codeday.me/bug/20190928/1827222.html