java swing 按键按下只调用一次

简介:

我使用Java swing做了一个密码管理系统,并且在登录界面增加了回车事件,但是每次回车时会触发两次。

界面:

 

回车事件处理代码:

Java代码   收藏代码
  1. Toolkit toolkit = Toolkit.getDefaultToolkit();  
  2.         // 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理.  
  3.         toolkit.addAWTEventListener(  
  4.                 new java.awt.event.AWTEventListener() {  
  5.                     public void eventDispatched(AWTEvent event) {  
  6.                         if (event.getClass() == KeyEvent.class) {  
  7.                             KeyEvent kE = ((KeyEvent) event);  
  8.                             // 处理按键事件 Ctrl+Enter  
  9.                             if ((kE.getKeyCode() == KeyEvent.VK_ENTER)  
  10.                                     ) {  
  11.   
  12. //                              window.refreshAction();  
  13.                                 System.out.println("enter");  
  14.                             }   
  15.                         }  
  16.                     }  
  17.             }, java.awt.AWTEvent.KEY_EVENT_MASK);  
  18.           

 

 为什么会执行两次呢?因为按键按下事件包含两个事件:key down,key press

如何只触发一次呢?

增加如下代码:

&&( kE.getID() == KeyEvent.KEY_PRESSED)

 

完整代码如下:

Java代码   收藏代码
  1. Toolkit toolkit = Toolkit.getDefaultToolkit();  
  2.         // 注册应用程序全局键盘事件, 所有的键盘事件都会被此事件监听器处理.  
  3.         toolkit.addAWTEventListener(  
  4.                 new java.awt.event.AWTEventListener() {  
  5.                     public void eventDispatched(AWTEvent event) {  
  6.                         if (event.getClass() == KeyEvent.class) {  
  7.                             KeyEvent kE = ((KeyEvent) event);  
  8.                             // 处理按键事件 Ctrl+Enter  
  9.                             if ((kE.getKeyCode() == KeyEvent.VK_ENTER)&&( kE.getID() == KeyEvent.KEY_PRESSED)  
  10.                                     ) {  
  11.   
  12. //                              window.refreshAction();  
  13.                                 System.out.println("enter");  
  14.                             }   
  15.                         }  
  16.                     }  
  17.             }, java.awt.AWTEvent.KEY_EVENT_MASK);  
  18.           

 

相关文章
|
16天前
|
存储 IDE Java
漂亮不是梦!Java Swing美化攻略
Java Swing 是一个为 Java 设计的 GUI 工具包,提供文本框、按钮等组件。尽管其外观可定制,通过 Look and Feel(LAF)机制改变应用风格,如 Darcula 和 FlatLaf,但现已淡出主流视野,主要应用于 IDE 领域,如 IntelliJ IDEA 和 Eclipse。相比其他 GUI 框架,Swing 的发展前景有限。
41 1
|
5月前
|
安全 Java API
|
5月前
|
存储 Java API
|
5月前
|
SQL Java 数据库连接
【Java】Java Swing 图书管借阅管理系统(源码+论文)【独一无二】
【Java】Java Swing 图书管借阅管理系统(源码+论文)【独一无二】
304 0
|
5月前
|
存储 数据可视化 Java
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
133 0
|
7月前
|
Java 数据安全/隐私保护
利用Java图形化界面组件Swing写一个简易的登录界面
利用Java图形化界面组件Swing写一个简易的登录界面
99 1
|
7月前
|
Java Windows
基于java Swing编写扫雷游戏设计实现(已调试)
基于java Swing编写扫雷游戏设计实现(已调试)
92 1
|
7月前
|
Java
Java Swing模拟水波纹扩散效果动画
Java Swing模拟水波纹扩散效果动画
68 6
|
7月前
|
Java
JAVA Swing自定义JScorllPanel
JAVA Swing自定义JScorllPanel
44 1
|
7月前
|
前端开发 Java UED
Java中的图形用户界面编程:Swing与JavaFX的比较与应用
Java中的图形用户界面编程:Swing与JavaFX的比较与应用