最近在改进密码管理系统,
突然想到可以为它增加全局快捷键,比如:
按Ctrl+Enter,触发【refresh】按钮,按【Page Up】、【Page Down】进行翻页,按【Home】跳转到第一页;按【End】跳转到最后一页。
代码如下:
Toolkit toolkit = Toolkit.getDefaultToolkit(); // 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理. toolkit.addAWTEventListener( new java.awt.event.AWTEventListener() { public void eventDispatched(AWTEvent event) { if (event.getClass() == KeyEvent.class) { KeyEvent kE = ((KeyEvent) event); // 处理按键事件 Ctrl+Enter if ((kE.getKeyCode() == KeyEvent.VK_ENTER) && (((InputEvent) event) .isControlDown())) { window.refreshAction(); } /* page down */else if (kE.getKeyCode() == KeyEvent.VK_PAGE_DOWN && kE.getID() == KeyEvent.KEY_PRESSED) { window.nextPageAction(); // System.out.println("page down:" // + kE.getID()); } /* page up */else if (kE.getKeyCode() == KeyEvent.VK_PAGE_UP && kE.getID() == KeyEvent.KEY_PRESSED) { window.previousPageAction(); // System.out.println("page down:" // + kE.getID()); }/* Ctrl +K */else if (kE.getKeyCode() == KeyEvent.VK_K && kE.isControlDown() && kE.getID() == KeyEvent.KEY_PRESSED) { System.out.println("Ctrl +K"); window.getSearchTF().requestFocus(); } /* home */else if (kE.getKeyCode() == KeyEvent.VK_HOME && kE.getID() == KeyEvent.KEY_PRESSED) { System.out.println("home"); window.firstPageAction(); } /* end */else if (kE.getKeyCode() == KeyEvent.VK_END && kE.getID() == KeyEvent.KEY_PRESSED) { System.out.println("end"); window.lastPageAction(); } } } }, java.awt.AWTEvent.KEY_EVENT_MASK);
其间遇到一个棘手的问题,就是我按【Page Down】时,触发了两次,如果当前页数为1,按一次【Page Down】,当前页数就变成了3,因为触发了两次。
为什么会这样呢?
因为键盘按下的时候触发了两种事件:KEY_PRESSED 和KEY_RELEASED
解决方法:
在if条件中增加:kE.getID() == KeyEvent.KEY_PRESSED
这样保证按一次键盘,只触发一次事件
相关推荐
java 在JButton上设置快捷键 java 在JButton上设置快捷键 java 在JButton上设置快捷键
java swing漂亮界面 超酷 javaswing教程
基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统,小白必看! 基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统,小白必看! 基于Java Swing + MySQL的图书管理系统,优秀Java毕业设计系统...
Java Swing是目前图形界面设计的主流开发工具,《Java Swing图形界面开发与案例详解[1]》从实用的角度出发,通过大量实例全面介绍Java Swing中各种组件的应用及图形界面的开发技术。《Java Swing图形界面开发与案例...
(java swing毕业设计)学生信息管理(文档+视频+源码)(java swing毕业设计)学生信息管理(文档+视频+源码)(java swing毕业设计)学生信息管理(文档+视频+源码)(java swing毕业设计)学生信息管理(文档+视频+源码)(java ...
基于Java Swing的物业管理系统源码+数据库(95分以上课程设计).zip 已获高分通过项目,代码完整下载即用,无需修改确保可以运行。 基于Java Swing的物业管理系统源码+数据库(95分以上课程设计).zip 已获高分...
java Swing多Jpanel仿安卓苹果桌面动态切换滑动效果
(java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全)(java swing毕业设计)酒店管理系统(ppt+ER图+流程图+需求背景数据库+架构说明有lun文视频源码齐全)(java swing毕业...
java swing 教程 精通javaswing
1、JAVA Swing日期选择控件datepicker 2、附带该控件的使用
将dll放在工程的根目录下 Main.java为一个调用的模板 利用jni来实现系统键盘的监听,不然swing无法全局监听
java swing漂亮软件界面 超酷 以及java swing教程
java swing用Logger输出错误日志
用JavaSwing写的测试版多人猜拳, 暂时不包含源代码
基于Java Swing和MySQL的超市管理系统是一种用于超市或商场管理商品和订单信息的计算机软件系统。该系统使用Java Swing作为GUI编程工具,MySQL作为数据库,可以方便地进行商品管理、订单管理、库存管理和查询等操作...
串口接收数据源码java swing技术,包含了打开串口,接收串口的数据,关闭串口,清空数据等功能,自己手动开发的,如果需要可以自行开发,也可以联系上品威客索取
java Swing读取图片,并以友好的方式呈现个使用者
java Swing panel button左右滑动效果
java Swing 上传文件-------------------------------------------------------------------------------------------------------------------------------------------------------