日期:2014-05-20  浏览次数:21088 次

为什么getKeyCode()返回的总是0

import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class login {

public static void main(String[] args) {
// TODO Auto-generated method stub
new loginGUI();

}
}
class loginGUI extends Frame {
loginGUI() {
Panel panel=new Panel();
final TextField user = new TextField(15);
final TextField password = new TextField(15);
user.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent ke){
if(ke.getKeyChar()==KeyEvent.VK_ENTER)
{
if(user.getText().equals("690231105"))
JOptionPane.showMessageDialog(null, "用户正确");
else JOptionPane.showMessageDialog(null, "用户错误");
}
else System.out.print(ke.getKeyCode()); //getKeyCode()返回0;用getKeyChar()虽然可以返回,但类型为char,与int不同
}
});
password.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==3){
if(password.getText().equals("5504716"))
JOptionPane.showMessageDialog(null, "密码正确");
else JOptionPane.showMessageDialog(null, "密码错误");
}
}
});
panel.add(new Label("用户"));
panel.add(user);
panel.add(new Label("密码"));
panel.add(password);
add(panel);
setTitle("拓展测试");
pack();
setVisible(true);
setResizable(false);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
//在user输入框中用键盘注册事件,每敲击一次键盘则返回该键的键值,若用getKeyCode()方法则每次返回的都是0,因此验证不了当输入Enter键的时候则获取其输入框的操作步骤;若用getKeyChar()方法就能验证键盘的键值,不过这样不是矛盾了 嘛?返回的char能跟int(即KeyEvent.VK_ENTER)进行比较?
求解

------解决方案--------------------
对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode 方法总是返回 VK_UNDEFINED。