2017-03-27 1 views
0
public class Checker implements Runnable { 
    @Override 
    public void run() { 
     String s = "hello everyone this is the clipboard program"; 
     ClipBoard clipBoard = new ClipBoard(); 
     Toolkit toolkit = Toolkit.getDefaultToolkit(); 
     Clipboard clipboard = toolkit.getSystemClipboard(); 
     String result = null; 
     try { 
      result = (String) clipboard.getData(DataFlavor.stringFlavor); 
      result= clipBoard.changeTheText(result); 
     } catch (UnsupportedFlavorException e) { 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     System.out.println("String from Clipboard:" + result); 
    } 

} 

スレッドの単純な使い方かもしれませんが、どのように動作するのか分かりません。 スレッドごとにクリップボードを1秒ごとにチェックし、それがユーザーによって変更されているかどうかを確認します。スレッドを使用して毎秒クリップボードを確認する

+0

スケジュールされたエグゼキュータ・サービスを使用します。 –

+0

スレッドの一般的な使い方を知りたいですか?あるいは、Javaの 'Thread'ライブラリを使う方法を尋ねていますか? – Nathan

答えて

0

あなたCheckerクラスはRunnableあるので、あなたはこれを行うことにより、Threadでそれを実行することができます:

public static void main(String[] args) { 
    Checker checker = new Checker(); 
    Thread thread = new Thread(checker); 
    thread.start(); 
} 

しかし、これは一度だけあなたのrun()メソッドを実行します。あなたが定期的にそれを実行したい場合は、このような構造以下、それを書き換える必要があります。

@Override 
public void run() { 
    try { 
     while(true) { 
      // ... your code here 
      Thread.sleep(1000); // this will pause the thread for 1 second 
     } 
    } catch(InterruptedException e) { 
    } 
} 

は今、あなたのコードは、無限ループの内側にあり、それが毎秒実行されます。停止したい場合は、thread.interrupt()に電話してください。

3

一度ScheduledExecutorServiceがここ

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 

scheduler.scheduleAtFixedRate(new Checker(), 1, 1, SECONDS); 

これはあなたのChecker後に1秒の遅延を実行し、その後毎秒トリックを行う必要がありますするために今私はちょうど私のクリップボードを印刷することができます。

関連する問題