2016-12-30 12 views
-2

このコードは、右矢印キーが押されたときに "A"を返し、離した後に "B"を返します。しかし、何も返さない。この問題を解決するために私は何ができますか?矢印キーを使用していないKeyListener

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

public class KeyIna implements KeyListener{ 

     @Override 
     public void keyPressed(KeyEvent ke0) { 
      if (ke0.getKeyCode() == KeyEvent.VK_RIGHT) { 
       System.out.println("A"); 
     } 
     } 

     @Override 
     public void keyReleased(KeyEvent ke1) { 
      if (ke1.getKeyCode() == KeyEvent.VK_RIGHT) { 
       System.out.println("B"); 
     } 

     } 

     @Override 
     public void keyTyped(KeyEvent ke2) { 
      // TODO Auto-generated method stub 

     } 
} 
+2

KeyListenerをコンポーネントに正しく追加しましたか? – Jyr

答えて

1

まあ、キーリスナーはあなたがそのようなウィンドウとして、画面上の何にでも割り当てることができるオブジェクトである、またはJComponent。リスナーを持つだけでは何もしません。キー・リスナーは、それが属するウィンドウがフォーカスされ、キー・プレス/リリースを受け取ったときに応答する役割を担います。あなただけの任意の汎用のウィンドウを持っているしたい場合は、あなただけ(main関数内)これを行うことができます:

JFrame frame = new JFrame("title"); // creates a window 
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // makes it so that the window closes when you press the close button or Alt-F4 
frame.setSize(200, 500); // or whatever size you want 
frame.add(new KeyIna()); // adds the listener to the window 
frame.setVisible(true); // shows the frame 

とし、その後、あなたは窓を押しキーをクリックすると、偉大なことが起こります。

+0

ありがとう!私はjframeにではなくパネルに追加していました。 –

+0

@SaurishSumanああ、大丈夫です。ソリューションがうれしい!パネルに追加することはできますが、パネルがjframeに追加されている限り、パネルをクリックしてフォーカスを置くと機能します。 – HyperNeutrino

関連する問題