开发者社区> 黄威的世界> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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.           

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
复习java逻辑---实现猜数字游戏
package shopping; import java.util.*; public class SendGiftMenu { public static void main(String[] args){ Random rnd = new Random(); Scanner input = new Scanner(System.
935 0
java线程实现
线程的生命周期及五种基本状态关于Java线程的生命周期,请看下面这张图:新建状态(New):当线程对象创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()
2156 0
Spark之RDD的transformation&action(Java&Scala实现)
Spark之RDD的transformation&action(Java&Scala实现)
6298 0
Java使用agent实现main方法之前
创建Agent项目 PreMainExecutor 类,在main方法之前执行此方法 public class PreMainExecutor { public static ...
944 0
使用JNA实现Java对C的调用
### jna coding #### C ```c #include int add(int x, int y) { return x+y; } ``` #### Java ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; p
2915 0
java 实现 mysql 数据库导出与导入(适合linux和windows)
</pre>备份<p></p><p></p><pre name="code" class="html">import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.InputStream; import java.io
2374 0
Java实现读取文件夹下(包括子目录)所有文件的文件名
在编程的过程中,经常会用到对文件的读写操作等。比如,找出某一个文件夹下的所有文件名等。 下面的程序给出了,获取某一给定文件夹下所有文件的绝对路径的程序。可以作为某一个模块,在需要的时候直接使用。 package src; import java.
874 0
Java mongoDB实现layIM版web即时通讯系统
webChat 基于websocket的即时通讯系统。 涉及技术:java、springMVC、mybatis、jquery、layim、mongoDB等等。 核心功能 参见layim演示 我这里实现了后端的全部功能。 包括我踩过的坑:1、java操作mongo 2、离线消息推送的线程同步异步问题等等。 websocket的代码实现 前端im.js 后端L
2421 0
java的nio之:java的nio的服务器实现模型
【nio服务端序列图】 一:nio服务器启动类 1 package com.yeepay.sxf.testnio; 2 /** 3 * nio创建的的timerServer服务器 4 * 5 * @author sxf 6 * 7 */ 8 p...
721 0
【框架】[Spring]纯Java方式实现AOP拦截-详解ThrowsAdvice异常通知
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 这篇博客讲了AOP代理-通知的3种方式: 1、MethodBeforeAdvice-前置通知 2、AfterReturningAdvice-正常返回后通知 3、MethodInterceptor-环绕通知 【框架】[Spring]纯Java的方式实现AOP切面(拦截)技术 现在本篇博客再详细讲解一下ThrowsAdvice-异常通知。
1110 0
+关注
黄威的世界
我是一个热衷IT技术的人,希望自己不断地设计开发出对别人非常有用的软件。有近7年的java开发经验(包括2年Android开发经验)和一年左右的linux使用经验。擅长Java Web后台开发 ,喜欢研究新的各种实用技术
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java基础入门(四)-泛型、反射、注解
立即下载
Java基础入门(一)
立即下载
JAVA反射原理以及一些常见的应用
立即下载