import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
class KeyPress extends JFrame implements KeyListener
{
JLabel jLabel1=new JLabel("虚拟键码:");
JLabel jLabel2=new JLabel("键名称:");
JLabel jLabel3=new JLabel("字符:");
JFrame f=new JFrame("KeyPress");
int k=0;
char c;
public void init()
{

f.setSize(400,200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setLayout(new FlowLayout());
Font font1=new Font("仿宋_GB2321",Font.ITALIC,20);
jLabel1.setFont(font1);
jLabel2.setFont(font1);
jLabel3.setFont(font1);
jLabel1.addKeyListener(new KeyPress());
jLabel2.addKeyListener(new KeyPress());
jLabel3.addKeyListener(new KeyPress());
f.getContentPane().add(jLabel1);
f.getContentPane().add(jLabel2);
f.getContentPane().add(jLabel3);
f.show();
}
public void keyPressed(KeyEvent e)
{
k=e.getKeyCode();
c=e.getKeyChar();
Integer k1=new Integer(k);
String s=k1.toString(k);
jLabel1.setText("虚拟键码"+s); 
jLabel2.setText("键名称"+c);
System.out.println(s);
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
public static void main(String args[])
{
KeyPress keypress=new KeyPress();
keypress.init();

}

}程序在上面,为什么按下任意键时没有反应,请大虾帮忙

解决方案 »

  1.   

    jLabel1.addKeyListener(new KeyPress());
    jLabel2.addKeyListener(new KeyPress());
    jLabel3.addKeyListener(new KeyPress());
    ???你是让JLabel 来响应按键事件吗?而且还new KeyPress();
    不行哦。
      

  2.   

    试试这样:import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    class KeyPress extends JFrame implements KeyListener
    {
    JLabel jLabel1=new JLabel("虚拟键码:");
    JLabel jLabel2=new JLabel("键名称:");
    JLabel jLabel3=new JLabel("字符:");
    JFrame f=new JFrame("KeyPress");
    int k=0;
    char c;
    public void init()
    {

    f.setSize(400,200);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().setLayout(new FlowLayout());
    Font font1=new Font("仿宋_GB2321",Font.ITALIC,20);
    jLabel1.setFont(font1);
    jLabel2.setFont(font1);
    jLabel3.setFont(font1);


    f.getContentPane().add(jLabel1);
    f.getContentPane().add(jLabel2);
    f.getContentPane().add(jLabel3);
    JTextField tf = new JTextField("!!!");
    f.getContentPane().add(tf);
    tf.addKeyListener(this);
    f.show();

    setFocusable(true);
    }
    public void keyPressed(KeyEvent e)
    {

    }
    public void keyReleased(KeyEvent e)
    {
    }
    public void keyTyped(KeyEvent e)
    {
    k=e.getKeyCode();
    c=e.getKeyChar();
    Integer k1=new Integer(k);
    String s=k1.toString(k);
    jLabel1.setText("虚拟键码"+s); 
    jLabel2.setText("键名称"+c);
    System.out.println(s);
    }
    public static void main(String args[])
    {
    KeyPress keypress=new KeyPress();
    keypress.init();

    }

    }
      

  3.   

    楼上的正解
    JLabel是不能响应键盘事件的