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

HR_Crystal 2011-12-22 09:30:27

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)进行比较?
求解
...全文
854 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小呆头 2014-06-10
  • 打赏
  • 举报
回复
谢谢,刚刚也在纠结这问题,
HR_Crystal 2011-12-22
  • 打赏
  • 举报
回复
十分感谢,我改成keyPressed/keyReleased后就能返回其键值了,能够识别Enter的键值;未查贴前我又试了一遍用System.out.print(KeyEvent.getKeyText(e.getKeyCode()))来输出,发现结果为 Unknown keyCode: 0x0的确如你所说的;这问题我下午开始烦了···
24K純帥 2011-12-22
  • 打赏
  • 举报
回复
对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode 方法总是返回 VK_UNDEFINED。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧