正文
一般来说,为组件添加监听的代码都类似形式:
(这一段的*代表的是同一单词)
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() |
int | getKeyLocation() |
static String | getKeyModifiersText(int modifiers) |
static String | getKeyText(int keyCode) |
boolean | isActionKey() |
paramString() | |
void | setKeyChar(char keyChar) |
void | setKeyCode(int keyCode) |
getKeyChar 方法总是返回有效的 Unicode 字符或 CHAR_UNDEFINED。KEY_TYPED 事件报告字符输入:KEY_PRESSED 和 KEY_RELEASED 事件不必与字符输入关联。因此,可以保证 getKeyChar 方法的结果只对 KEY_TYPED 事件有意义。
对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode 方法总是返回 VK_UNDEFINED。
常用字段摘要:(更多细节参考java文档)
static int | VK_0 |
static int | VK_A |
static int | |
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 | |
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 | |
static int | VK_F1 |
static int | VK_F2 |
static int | VK_F3 |
static int | VK_F4 |
static int | VK_F5 |
static int | VK_F6 |
static int | VK_F7 |
static int | VK_F8 |
static int | VK_F9 |
static int | VK_F16 |
static int | VK_F17 |
static int | VK_F18 |
static int | VK_F19 |
static int | VK_F20 |
static int | VK_F21 |
static int | VK_F22 |
static int | VK_F23 |
static int | VK_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 |
static int | KEY_LOCATION_NUMPAD |
static int | VK_UNDEFINED |
static int | |
static int | |
static int | |
static int |
广而告之
给大家推荐一个好用的在线工具网站:
如果我们在学习工作过程中,需要用到时间戳与日期的互转,或JSON在线编辑、格式化、校验JSON格式等功能,建议首选这个常用工具|无忧在线工具。
这个网站有极简风格的页面,它的时间戳转换器,可以智能解析多种常见的日期格式。例如“1949-10-01”或“1949/10-01”,原样复制到输入框就可以智能解析。
它下方的JSON编辑器,支持JSON格式、JSON压缩、JSON在线编辑,校验JSON格式等功能。
并且有折叠功能,非常强大。
推荐使用:常用工具|无忧在线工具
参考文档:java官方文档中文版