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.           

 

相关文章
|
3天前
|
存储 设计模式 前端开发
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
|
3天前
|
Java Windows
基于java Swing编写扫雷游戏设计实现(已调试)
基于java Swing编写扫雷游戏设计实现(已调试)
11 1
|
10天前
|
Java
JAVA Swing自定义JScorllPanel
JAVA Swing自定义JScorllPanel
9 1
|
10天前
|
Java
Java Swing模拟水波纹扩散效果动画
Java Swing模拟水波纹扩散效果动画
18 6
|
11天前
|
Java
Java Swing 层次面板(JLayeredPanel) Demo
Java Swing 层次面板(JLayeredPanel) Demo
8 0
|
11天前
|
缓存 Java
Java Swing 2D系统属性参数详解
Java Swing 2D系统属性参数详解
14 0
|
11天前
|
Java
【Gloomyfish】Java Swing 实现实际大小到全屏切换
【Gloomyfish】Java Swing 实现实际大小到全屏切换
11 1
|
19天前
|
设计模式 Java 开发者
Java一分钟之-Swing组件:JTable, JTree, JTextArea
本文介绍了Java Swing的三个关键组件:`JTable`、`JTree`和`JTextArea`,用于数据展示和用户输入。`JTable`展示二维数据,如表格;`JTree`展示层次结构数据,如文件系统;`JTextArea`则用于多行文本输入和显示。每个组件都提供了示例代码,并列出常见问题及避免方法,如数据源未设置、滚动面板缺失等。理解并掌握这些组件,能帮助开发者创建高效用户界面。
32 0
|
19天前
|
设计模式 Java 容器
Java一分钟之-Swing基础:JFrame, JPanel, JButton
Java Swing教程介绍了构建桌面应用的关键组件:JFrame(顶级容器,显示主窗口)、JPanel(组合其他组件的容器)和JButton(交互元素)。文中通过示例代码展示了这些组件的使用,并列出常见问题及解决方法,如确保设置JFrame的可见性和关闭操作,正确添加组件至JPanel,以及为JButton添加事件监听器。理解这些基础将有助于开发功能完善的GUI应用。
11 0
|
1月前
|
Java 关系型数据库 MySQL
基于swing的java物业管理系统
基于swing的java物业管理系统
27 5