Mac OS X上的剪贴板监控| Java的

Naf*_*aly 9 java macos clipboard multithreading awt

我有麻烦的在Mac OS X系统剪贴板,我试图做的获取数据是倾听到系统剪贴板,并打印剪贴板中的内容每个新[基于文本的]信息被放入它的时间.

问题:下面的代码在Windows 7和openSUSE Linux机器上工作得非常好,但是当我尝试在Mac OS X上运行相同的代码时,程序无法打印剪贴板的新内容,直到关注应用程序.[在点击停靠栏上的应用程序图标之前,没有任何内容打印...]

我的源代码:

import java.awt.Toolkit;  
import java.awt.datatransfer.*;  
import java.io.IOException;  

public class ClipboardListener extends Thread implements ClipboardOwner {

    Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();  

    public void run(){  
        Transferable selection = systemClipboard.getContents(this);  
        gainOwnership(selection);  
    }  

    public void gainOwnership(Transferable t){ 
        try {this.sleep(100);} 
        catch (InterruptedException e) {e.printStackTrace();}
        systemClipboard.setContents(t, this);  
    }  

    public void lostOwnership(Clipboard clipboard, Transferable contents) {
        try {System.out.println((String) clipboard.getData(DataFlavor.stringFlavor));} 
        catch (UnsupportedFlavorException e) {} 
        catch (IOException e) {}
        gainOwnership(contents);  
    }  
}
Run Code Online (Sandbox Code Playgroud)
public class myApp {

    public static void main(String[] args){
        ClipboardListener listener = new ClipboardListener();
        listener.start();
        while(true){}}

}
Run Code Online (Sandbox Code Playgroud)

我错过了什么/做错了什么?

[更新] 我在这里发现了类似的问题:Java线程在没有专注于OSX时进入休眠状态 但是使用命令"java -jar myApp.jar&"并不能解决我的问题.