2016-10-10 11 views
0

JavaでKeyListenerを使用しようとすると問題が発生しています。
私は、キーが押されるまで実行され、そのキーを出力するプログラムを書こうとしています。
これは、より複雑なコードへの足がかりです。そのため、押されたキーを印刷するメソッドの使用は、プロトタイプの一種として使用されています。JavaでkeyListenerを正しく使用する方法

import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

public class keylistener implements KeyListener{ 
    public keylistener(){ 
     addKeyListener(this); 
    } 

    public void keyPressed(KeyEvent e){ 
     int key = e.getKeyCode(); 
     keylistener output = new keylistener(); 
     output.print(key); 
    } 

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

    public void print(int key){ 
     System.out.println(key); 
    } 

    public static void main(String[] args){ 
    } 
} 

プログラムが実行され、その後、後の直接終了:ここ

はコードです。
私は以前にKeyListenerを使用したことが一度もありませんでした。私はプログラムがキーが押されるのを待つ方法を理解できません。

+1

あなたのメインの方法は空です....一般的に、GUIでキーストーンを使用します –

答えて

0

コンソールアプリケーションにKeyListenerを追加したことはありません(おそらくKeyListenerはAWTパッケージに含まれています(主にGUIコンポーネントが含まれているからです)が、ここに示すサンプルのGUIアプリケーションがあります。

あなたの最初の問題は、しかし、ことを走ったことにするために、コンポーネント自体に追加する必要がありますけれども、あなたが、あなたのmain方法にnew keylistener()を追加しているということです。

public class GuiMain extends JFrame { // A GUI Frame 

    public GuiMain() { 
     // Add the listener 
     this.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent e) { 
       super.keyPressed(e); 
       // Print out the code 
       System.out.println(e.getKeyCode()); 
      } 
     }); 

     // Show something 
     add(new JLabel("Hello World!")); 
     pack(); 
    } 

    public static void main(String[] args) { 
     // Run the GUI 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       GuiMain gui = new GuiMain(); 
       gui.setVisible(true); 
      } 
     }); 
    } 

} 
1

のKeyListenerはのKeyListenerを実行するためのGUIコンポーネントを必要とするGUIアプリケーションではなく、コンソールアプリケーションで使用されることが意図されます。通常、コンソールアプリケーションでは、BufferedReaderとInputStreamReaderを使用します。

ここでは、BufferedReaderとInputStreamReaderでwhileループを使用してアプリケーションの入力待ちを維持するアイデアを示すコンソールアプリケーションを紹介します。これを行うための他の方法がありますが。私はこれを非常に明示して、あなたがそのコンセプトを理解できるようにしました。

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class StackStuff { 

public static void main(String[] args) throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    boolean runs = true ; 
    System.out.println("Press any key to kill this app..."); 
    while(runs){ 
      input =br.readLine(); 
     if (!(input==null)){ 
      System.out.println(input); 
      runs=false; 
      } 
     } 
    System.out.println("I am dead!!"); 
    System.exit(0); 

} 
関連する問題