スレッド:うれしく?二Runnablesマウスリスナー
-
21-09-2019 - |
質問
私は、JWindow、JFrameもしていましたrunnableの両方をマウスリスナー.私テルのすぐ近くは飲食面では貧弱試験なプロジェクトのブログを簡素化いのではないかと思いましたが自重なんて出発、自分のマウスリコーダー replayer(使用Javaのロボットを行っています。-
ちょっとのように簡略化AutoHotKeyはAutoItものです---では差し支えないものですが走っUbuntu機械レガントなホテルでした。私のWindowsいですか?
のJWindowいは半透明-全体の画面をクリックすると、次のようにまでは消滅および再現したエフェクトをクリックし、オブジェクトの背後にその画面に戻ります。この記録です。また、ユーザの右クリックの設定は直接目に見えないので、記録動作の再現.
時再生したいオプションできる出口より応したアプリケーションとなって最善の方法このJFrameのJWindow Runnable.
のJFrameには単にその提供を間近のオプションから願います。
そこで私のスクリプトを実行していま
public static void Main(String[] args){
recorder = new Recorder();
gui = new GUI();
Thread tr = new Thread(recorder);
Thread tg = new Thread(gui);
tr.setName("Recorder");
tg.setName("GUI");
tr.start();
tg.start();
}
私の理解では、レコーダー、GUIをrunnableオブジェとしたスレッドの新しいスレッドのコマンドです。時には使用します。start()私は当初の実行のスレッドからこのシステムを決定するスレッドは、特定の時間。
のレコーダーとGUI。
public class Recorder
implements Runnable, MouseListener {
//Constructor and other code
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
//Record events
}else{
//Replay events
}
System.exit(0);
}
public void run() {
System.out.println("Recorder");
}
}
public class GUI
implements Runnable, MouseListener {
//Constructor, simply constructs JFrame and sets mouselistener to it
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
public void run() {
System.out.println("GUI");
}
}
自プリントアウトしたりすることレコーダーおよびそのGUI きの記録に私のイベント その上で右クリックしJWindowを再生してい...
その時にクリックし、JFrameの閉じるボタンで、フレームでのマウスリスナーでな出口まで全ての行動が全て再生?
ひとつわかったこれまでになかったかくつろぎいただけますが何かのスレッド。できます。ます。println("");実行スレッドの金型?いた、ちょっと変わったがループし、自分た版画
GUI GUI GUI レコーダー レコーダー GUI レコーダー など など
んでそのスレッドが同時に...だったのでほとんどの場合、他のすべての行為以外の行いなかったのでしょうかを実行され...どのようにしたマウスリスナー等のスレッドの実行?
解決
きく Threads
と Objects
.き Object
である Runnable
それだけ感じます。しかしこえてくるということではないが別のスレッド(この場合、イベントスレッドの責任を負うものではあり MouseListener
呼び出方法お Runnable
ることにより実行されるスレッドと実行 Runnable
.きのメソッドが呼び出されたあとでスイッチの他のねじになります。だいたいことが必要です。スキューの MouseListener
での課題、お Runnable.run()
おしんの新しい課題です。
他のヒント
スイング初期化すると、独自のイベントディスパッチスレッドが開始されます。すべてのリスナー方法は、このスレッド内で実行されます。リスナーオブジェクトが実行可能な実装を実装するかどうかは関係ありません。
このチュートリアルを参照して、スイングのコンテキストでマルチスレッドの基本を把握してください。 http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html
あなたの質問に対する実際の答えは、チュートリアルのこの部分にあります:
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/cancel.html
しかし、私はあなたがチュートリアル全体を進めることをお勧めします。