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&"并不能解决我的问题.
| 归档时间: |
|
| 查看次数: |
2512 次 |
| 最近记录: |