2011-12-20 12 views
2

このコードを書いているうちに、jarファイルを作成すると、プログラムを終了するには優雅な方法が必要です。私はキー 'F1'を使用することを選択しました。私はいくつかの記事をオンラインで調査し、それを処理しようとしている方法は実行可能なアプローチでなければならないが、プログラムはイベントメソッドを起動していないようだ。 system.out.printlnは決して表示されません。Javaキーが押されたイベントが発射されない

import java.applet.Applet; 
import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.util.Random; 


public class MouseMove extends Applet implements KeyListener{ 

public static Random randomGenerator = new Random(); 
public static int code; 

public void init(){ 
    addKeyListener(this); 
} 

public void keyPressed(KeyEvent evt){ 
    code = evt.getKeyCode(); 
    System.out.println("Key: "+KeyEvent.getKeyText(code)); 

    if(code == KeyEvent.VK_F1){ 
     System.exit(0); 
    } 
} 

public void keyTyped(KeyEvent e){ 
} 
public void keyReleased(KeyEvent e){ 
} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    try { 

     Robot robot = new Robot();   

     while(true){ 

      robot.mouseMove((int)(Math.random()*1366), (int)(Math.random()*768)); 
      robot.delay(5000); 
      robot.mouseWheel((int)(Math.random()*786)); 
      robot.delay(5000); 
     } 
    } catch (AWTException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
}//main 

}//class 
+0

私の側では、プログラムがうまく動作しています。アプレットを一度クリックする必要があります。そのSystem.out.println();コードはどのキーが押されているかを示しています。私はこれで何の問題も見つけられませんでした。 –

+0

私の最後にprintln()は決して起動しません。プログラムは終了せずに実行を続けます。 : – whitewolfpgh

答えて

2
  1. KeyListenerComponentは、ウィンドウのFocusを持っている場合にのみ機能します。

  2. visibleコンテナを作成する必要があります。

  3. コンポーネント

    ため
  4. setFocusable()

  5. ベター利用スイングJComponentだろう。

  6. JAppletの代わりにJFrameを使用してください。

+0

私は目に見えないオブジェクトを避けようとしていましたが、F1キーを押してもプログラムが表示されずに実行を停止したいのですが、私のアプローチはうまくいかないでしょうか? – whitewolfpgh

+0

コンクリートPCに最初にウイルス対策を施して遊んでください – mKorbel

1

あなたは決してMouseMoveのインスタンスを作成しません。あなたの主な方法はロボットを作ってループを開始するだけです。オブジェクトが存在しない場合は、そのメソッドの1つを呼び出すことはできません。

+0

init()がそれを世話していると思っていたのですが、MouseMove以外のものはmove = new MouseMove(); mainでmove.init()が必要ですか?まだ応答していないのでIDEはクラッシュします実際に実行を停止します。正常に実行を停止するためのより良い方法はありますか? – whitewolfpgh

1

アプレットで作業するときにSystem.exit()を使用しないでください。 Java Applet(チュートリアル)をご覧ください。 .htmドキュメントを作成し、アプレットを実行するには<applet>タグを追加する必要があります。あなたはAppletViewerツールまたはWebブラウザを使用して、そのhtmドキュメントを起動することができます。

file.htm Webブラウザでのコマンドラインまたは開いた.htmから

<applet code="MouseMove" width="200" height="200"></applet> 

開始アプレットビューアツール。

>appletviewer file.htm