java键盘监听详解

正文

一般来说,为组件添加监听的代码都类似形式:

(这一段的*代表的是同一单词)

object.add*Listener(new *Listener() {

@Override

//实现所有方法...

});

上面的参数是实现了对应接口的内部类,这样就需要实现接口里的所有方法,即使没有用到。为了代码简洁,对于有些有多个方法的接口,Java提供了实现了该接口的适配类:*Adapter),所以添加监听也可以用以下形式:

object.add*Listener(new *Adapter() {

@Override

//重写需要的方法...

});

键盘监听

代码示例:

object.addKeyListener(new KeyListener() {


@Override

public void keyTyped(KeyEvent e) {

// 键入某个键时调用此方法。不依赖于平台或键盘布局 。

}


@Override

public void keyReleased(KeyEvent e) {

// 释放某个键时调用此方法。依赖于平台或键盘布局。


}


@Override

public void keyPressed(KeyEvent arg0) {

//按下某个键时调用此方法。依赖于平台或键盘布局。

//被认为是发现字符输入的最佳方式

}

});

或者

object.addKeyListener(new KeyAdapter() {
    //重写需要的方法
});

按下键事件是键入键的必要不充分条件,按下键事件和键入键事件有可能是多对一。

“按下键”和“释放键”事件 是低级别事件,依赖于平台和键盘布局。只要按下或释放键就生成这些事件,它们是发现不生成字符输入的键(如动作键、修改键等等)的惟一方式。通过 KeyEvent 对象的getKeyCode 方法可指出按下或释放的键,该方法返回一个虚拟键码。

KeyEvent 详解:

方法摘要:

 char

getKeyChar() 
          返回与此事件中的键关联的字符。

 int

getKeyCode() 
          返回与此事件中的键关联的整数 keyCode。

 int

getKeyLocation() 
          返回产生此按键事件的键位置。

static String

getKeyModifiersText(int modifiers) 
          返回描述修改键的 String,如 "Shift" 或 "Ctrl+Shift"。

static String

getKeyText(int keyCode) 
          返回描述 keyCode 的 String,如 "HOME"、"F1" 或 "A"。

 boolean

isActionKey() 
          返回此事件中的键是否为“动作”键。

 String

paramString() 
          返回标识此事件的参数字符串。

 void

setKeyChar(char keyChar) 
          设置 keyCode 值,以表示某个逻辑字符。

 void

setKeyCode(int keyCode) 
          设置 keyCode 值,以表示某个物理键。

getKeyChar 方法总是返回有效的 Unicode 字符或 CHAR_UNDEFINED。KEY_TYPED 事件报告字符输入:KEY_PRESSED 和 KEY_RELEASED 事件不必与字符输入关联。因此,可以保证 getKeyChar 方法的结果只对 KEY_TYPED 事件有意义。

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

常用字段摘要:(更多细节参考java文档)

static int

VK_0 
          VK_0 到 VK_9 与 ASCII 的‘0’到‘9’(0x30 - 0x39) 相同

static int

VK_A 
          VK_A 到 VK_Z 与 ASCII 的‘A’到‘Z’(0x41 - 0x5A) 相同

static int

VK_LEFT_PARENTHESIS 
                    "("

static int

VK_MINUS 
                     "-"           

static int

VK_NUMBER_SIGN 
                     "#"

static int

VK_OPEN_BRACKET 
                     "["

static int

VK_PERIOD 
                     "."

static int

VK_PLUS 
                     "+"

static int

VK_AT 
                     "@"

static int

VK_BACK_SLASH 
                     "\"

static int

VK_CLOSE_BRACKET 
                     "]"

static int

VK_COLON 
                     ":"

static int

VK_COMMA 
                     ","

static int

VK_RIGHT_PARENTHESIS 
                     ")"

static int

VK_SEMICOLON 
                     ";"

static int

VK_SLASH 
                     "/"

static int

VK_UNDERSCORE 
                     "_"

static int

VK_DOLLAR 
                     "$"

static int

VK_EQUALS 
                     "="

static int

VK_EURO_SIGN 
          用于欧洲货币符号键的常量。

static int

VK_EXCLAMATION_MARK 
                     "!"

static int

VK_F1 
          用于 F1 功能键的常量。

static int

VK_F2 
          用于 F2 功能键的常量。

static int

VK_F3 
          用于 F3 功能键的常量。

static int

VK_F4 
          用于 F4 功能键的常量。

static int

VK_F5 
          用于 F5 功能键的常量。

static int

VK_F6 
          用于 F6 功能键的常量。

static int

VK_F7 
          用于 F7 功能键的常量。

static int

VK_F8 
          用于 F8 功能键的常量。

static int

VK_F9 
          用于 F9 功能键的常量。

static int

VK_F16 
          用于 F16 功能键的常量。

static int

VK_F17 
          用于 F17 功能键的常量。

static int

VK_F18 
          用于 F18 功能键的常量。

static int

VK_F19 
          用于 F19 功能键的常量。

static int

VK_F20 
          用于 F20 功能键的常量。

static int

VK_F21 
          用于 F21 功能键的常量。

static int

VK_F22 
          用于 F22 功能键的常量。

static int

VK_F23 
          用于 F23 功能键的常量。

static int

VK_F24 
          用于 F24 功能键的常量。

static int

VK_KP_DOWN 
          用于数字键盘向下方向键的常量。

static int

VK_KP_LEFT 
          用于数字键盘向左方向键的常量。

static int

VK_KP_RIGHT 
          用于数字键盘向右方向键的常量。

static int

VK_KP_UP 
          用于数字键盘向上方向键的常量。

static int

VK_LEFT 
          用于非数字键盘向左方向键的常量。

static int

VK_RIGHT 
          用于非数字键盘向右方向键的常量。

static int

VK_UP 
          用于非数字键盘向上方向键的常量。

static int

VK_DOWN 
          用于非数字键盘向下方向键的常量。

static char

CHAR_UNDEFINED 
          KEY_PRESSED 和 KEY_RELEASED 事件没有映射到一个有效的 Unicode 字符时使用此值作为 keyChar 值。

static int

KEY_LOCATION_NUMPAD 
          该常量指示按键事件发自于数字键盘或对应于数字键盘的虚拟键。

static int

VK_UNDEFINED 
          此值用于指出 keyCode 是未知的。

static int

VK_COPY 
           

static int

VK_CUT 
           

static int

VK_PASTE 
           

static int

VK_HOME 
           

 广而告之


给大家推荐一个好用的在线工具网站:

常用工具|无忧在线工具

如果我们在学习工作过程中,需要用到时间戳与日期的互转,或JSON在线编辑、格式化、校验JSON格式等功能,建议首选这个常用工具|无忧在线工具

这个网站有极简风格的页面,它的时间戳转换器,可以智能解析多种常见的日期格式。例如“1949-10-01”或“1949/10-01”,原样复制到输入框就可以智能解析。

它下方的JSON编辑器,支持JSON格式、JSON压缩、JSON在线编辑,校验JSON格式等功能。

并且有折叠功能,非常强大。

推荐使用:常用工具|无忧在线工具

参考文档:java官方文档中文版

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值