swing中键盘事件失效分析

在进行swing开发时,难免用到键盘监听事件,但是有时候键盘事件会莫名失效。

分析原因是容器失焦了。

例如,一个frame上有多个容器,其中一个包含键盘监听事件,加入我们再加入其他容器时,键盘事件就失效了,这是因为焦点跑到了其他容器上去了,重新获取焦点我们可以这样做:

gamePanel.setFocusable(true);

gamePanel.requestFocus(true);

还有一种情况是我遇到的,我在另一个容器上添加几个按钮事件,点击按钮之后,另一个容器上的键盘监听失效了,这是因为焦点被按钮获取了,重新获取焦点我们可以这样做:

在按钮事件逻辑执行完之后执行如下API:

gamePanel.requestFocus(true);    //让面板重新获得焦点

时间: 2024-10-08 13:12:30

swing中键盘事件失效分析的相关文章

【Swing】理解Swing中的事件与线程

talk is cheap , show me the code. Swing中的事件 事件驱动 所有的GUI程序都是事件驱动的.Swing当然也是. GUI程序不同于Command Line程序,一个很大的区别是程序执行的驱动条件:命令行程序是接受用户输入的文本参数,对命令解析,然后通过类似switch的选择来执行不同的功能模块.而GUI程 序就不一样了.GUI程序由界面元素组成,如Button,CheckBox,TextArea,等等.用户操作不同的组件,就会引发不同的事件,然后, 程序编写

html中键盘事件----在路上(16)

键盘事件,这里以onkeyup为例: 解析:当在一个input中输入文本时,在另一个div中输出文本 在下面是本人写的小demo,供分享. 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>键盘事件</title> <style> .bigDiv{ width: 600px; hei

vue组件中click事件失效

最近使用vue学习开发移动端的项目,使用了bette-scroll插件做滚动.在引入better-scroll的组件中使用@click事件的时候,点击事件失效,v-on:click.v-bind:click.@click.native都不行,试了一下@touchstart是却是可以的,发现better-scroll的配置中没有设置click:true,设置过之后click事件成功. 后来在使用vuex的时候一直报"[vuex] unknown mutation type: changeCity&

C#中的委托事件的分析

推荐:http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html 委托和事件在 .NET Framework 中的应用非常广泛,然而,较好地理解委托和事件对很多接触 C# 时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里堵得慌,浑身不自在.本章中,我将由浅入深地讲述什么是委托.为什么要使用委托.对它们的编译代码也做了讨论 using System; usin

Java Swing中有关事件机制

看到过两种方式启动主窗体的代码: 方式1: java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MainJFrame().setVisible(true); } }); 方式2 javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new MainJFrame().setVisible(

vue中键盘事件

@keydown.按键对应的编码名 或者@keydown.(enter left up down right space delete tab esc ...) 组合按键 例如:同时按下ctrl+B @keydown.ctrl.66="" 原文地址:https://www.cnblogs.com/H5lcy/p/11650839.html

Spring 中的事件机制

说到事件机制,可能脑海中最先浮现的就是日常使用的各种 listener,listener去监听事件源,如果被监听的事件有变化就会通知listener,从而针对变化做相应的动作.这些listener是怎么实现的呢?说listener之前,我们先从设计模式开始讲起. 观察者模式 观察者模式一般包含以下几个对象: Subject:被观察的对象.它提供一系列方法来增加和删除观察者对象,同时它定义了通知方法notify().目标类可以是接口,也可以是抽象类或具体类. ConcreteSubject:具体的

转:Selenium WebDriver 中鼠标和键盘事件分析及扩展

在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是 Actions 类,在使用该类的过程中会配合使用到 Keys 枚举以及 Mouse. Keyboard.CompositeAction 等类. 其次,在实际测试过程中,可能会遇到某些按键没办法使用 Actions.Keys 等类来

Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)

本文将总结 Selenium WebDriver 中的一些鼠标和键盘事件的使用,以及组合键的使用,并且将介绍 WebDriver 中没有实现的键盘事件(Keys 枚举中没有列举的按键)的扩展.举例说明扩展 Alt+PrtSc 组合键来截取当前活动窗口并将剪切板图像保存到文件. 概念 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 WebDerive