2011-08-05 3 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의 대답을 수락하고 upvote합니다. :) –

+0

나는 가고 있었다. 나는 10 분을 기다려야했다. 그리고 나는 단지 저녁 식사를 먹었다. ;) – iAndr0idOs

관련 문제