2011-08-05 14 views
0

KeyListenerに問題があります。作成したJPanelにKeyListenerを追加しますが、KeyListenerは機能しません。メインクラスのKeyListenerが機能しませんか?

私のコードはKeyboardEventsクラスの

package client; 

import java.awt.Dimension; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class KeyTest { 

    public static KeyboardEvents keyEvents; 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("KeyTest"); 
     JPanel panel = new JPanel(); 

     panel.setFocusable(true); 
     panel.requestFocus(); 
     panel.addKeyListener(keyEvents); 

     frame.add(panel); 
     frame.setSize(new Dimension(640,480)); 

     frame.setVisible(true); 
    } 

} 

私のコードは私のKeyboardEventsクラスはいつも私のために働いてい

package client; 

import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.util.HashMap; 
import java.util.Map; 

public class KeyboardEvents implements KeyListener { 

    Map<Integer, Integer> keyMap; 

    public KeyboardEvents() { 
      initiate(); 
    } 

    public void initiate() { 
     keyMap = new HashMap<Integer, Integer>(); 
     } 

    public void keyPressed(KeyEvent e) { 
     keyMap.put(new Integer(e.getKeyCode()), new Integer(keyMap.size())); 
     System.out.println(e.getKeyCode()); 
    } 

    public void keyReleased(KeyEvent e) { 
     keyMap.remove(e.getKeyCode()); 
    } 

    public void keyTyped(KeyEvent e) { 
    } 

    public boolean keyDown(int key) { 
     return keyMap.containsKey(key); 
    } 

    public Integer[] getKeys() { 
     Object[] keys; 
     keys = keyMap.keySet().toArray(); 
     Integer[] c = new Integer[keys.length]; 
     for(int i = 0; i < keys.length; i++) 
     { 
      c[i] = (Integer) keys[i]; 
     } 
     return c; 
    } 

} 

です。私はなぜそれが今働かないのか理解できません。

答えて

2

keyEventsがnullです。あなたがそれを追加する前に:

keyEvents= new KeyBoardEvents(); 
+0

ああ、私はばかです。ありがとう。 – iAndr0idOs

+0

@iAndr:Atreysの答えを受け入れることができます。 :) –

+0

私は行くつもりだった。私は10分待たなければなりませんでした。私はちょうど夕食を食べました。 ;) – iAndr0idOs