2011-08-05 7 views
0

J'ai des problèmes avec un KeyListener. J'ajoute le KeyListener au JPanel que je crée, mais le KeyListener ne fonctionne pas.KeyListener ne fonctionne pas?

Mon code pour la classe principale est

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); 
    } 

} 

Mon code pour la classe KeyboardEvents est

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; 
    } 

} 

Ma KeyboardEvents classe a toujours travaillé pour moi. Je n'arrive pas à comprendre pourquoi ça ne marchera pas maintenant.

Répondre

2

keyEvents est null. avant de l'ajouter:

keyEvents= new KeyBoardEvents(); 
+0

ah, hahaha, je suis un idiot. Merci. – iAndr0idOs

+0

@iAndr: sois un idiot et accepte et augmente la réponse d'Atreys. :) –

+0

J'allais à. J'ai dû attendre 10 minutes, cependant, et j'ai juste mangé le dîner. ;) – iAndr0idOs