Mac OS Xのシステムクリップボードからデータを取得する際に問題が発生しました。 私がやっていることは、新しい[テキストベース]情報があるたびに、システムクリップボードを聴いてクリップボードの内容を印刷することですそれに入れなさい。Mac OS Xでクリップボードを監視する| Java
問題は: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);
}
}
私が欠けている何
public class myApp {
public static void main(String[] args){
ClipboardListener listener = new ClipboardListener();
listener.start();
while(true){}}
}
/間違っている:
私のソースコード[Iは、ドックのアプリケーションアイコンをクリックするまでは何も...印刷されませんか]?
[更新] 私は同様の問題がここに掲載見つかりましたJava thread goes to sleep when not in focus on OSX は、しかし、私の回避策として動作しませんでした「myApp.jar & -jarのjava」コマンドを使用して。
この問題を回避する方法はありますか?私も同じことが必要です。 –
残念ながら、いいえ。 –