Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java Swing keyEvent vs keyPressed/keyReleased不同的键代码?

为什么keyTyped会向keyPressed/keyReleased返回不同的KeyEvents?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package poke;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class PokeEvents implements KeyListener {
    static public void main(String args[]) {
        new PokeEvents();
    }

    public PokeEvents() {
        JFrame frame = new JFrame();
        frame.addKeyListener(this);
        frame.setVisible(true);
    }

    @Override
    public void keyTyped(KeyEvent e) {
        System.err.println("keyTyped: "+e.getKeyCode()+", "+e.getKeyChar()+", "+e.getExtendedKeyCode());
    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.err.println("keyPressed: "+e.getKeyCode()+", "+e.getKeyChar()+", "+e.getExtendedKeyCode());
    }

    @Override
    public void keyReleased(KeyEvent e) {
        System.err.println("keyReleased: "+e.getKeyCode()+", "+e.getKeyChar()+", "+e.getExtendedKeyCode());
    }

}

运行它,按键盘上的'a‘,输出是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
keyPressed: 65, a, 65
keyTyped: 0, a, 0
keyReleased: 65, a, 65

好的,看起来是无害的,你说。让我们加大赌注吧。尝试将其与Ctrl组合(我们的软件中暴露这一点的原始错误是处理Ctrl-键组合)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
keyPressed: 17, , 17
keyPressed: 65, , 65
keyTyped: 0, , 0
keyReleased: 65, , 65
keyReleased: 17, , 17

只需注意: 17 -控制,65 - a。

keyTyped上,没有办法知道字符是什么。这似乎是null的一种特征。

由于该字符不会在浏览器中呈现,因此根据编辑器和Eclipse进行如下所示:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 13:43:52

没有不同的密钥代码。无论有没有Ctrl,"A“键生成的密钥代码都是65。当按下Ctrl时,不同之处在于您从getKeyChar()获得的字符。这是应该的。

不,您得到的字符不是“一种null字符”,它是ascii代码为1的Ctrl+A字符,并且它是无法打印的。但它确实存在。你只是看不到它,因为它是,嗯,好吧,不能打印。

无论是否按下Ctrl键,KeyTyped都会始终报告键代码为0。未为KeyTyped事件定义KeyEvent类的keyCode成员。它们只是重用了相同的event类,所以getter仍然可以供您调用,但您不应该这样做,因为当事件为KeyTyped时,您永远不会获得keyCode信息。如果您想要一个keyCode,可以查看keyPressed事件。如果您想要一个字符,可以查看keyPressedkeyTyped事件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45462556

复制
相关文章
JAVA中替换字符的方法replace和replaceAll 区别
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32534855/article/details/90939899
DencyCheng
2019/06/14
3.2K0
Java---replace与replaceAll的区别
乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样。
谙忆
2021/01/21
9790
滴滴笔试 Java replaceAll() 方法
选择 考了 Java replaceAll() 方法 我之前是真没用过 选择也就选错了
韩旭051
2021/04/14
8470
滴滴笔试 Java replaceAll() 方法
Python中的id()函数_怪异现象
那么,id(obj)和id(obj)是不是相等的呢?让我们来测试一下(Python3.7)
py3study
2020/01/13
7160
Java中的replaceAll()方法同时替换多个不同的字符串
需求场景 场景一 String str1 = "广东省,福建省,北京市,海淀区,河北省,上海市,...."; 需要把“省”、“市”、“区”一起去掉; 变成: 广东,福建,北京,海淀,河北,上海....
崔笑颜
2020/06/08
11.9K0
怪异的排序
咋一看,不就是先按姓名做排序,然后再分别对班组、机台号做排序么。按这个思路写出了 SQL(表结构及数据在文末),得到的结果和预期的有点不一样。
白日梦想家
2020/11/03
3630
【说站】js中replaceAll方法的实现
1、replaceAll()可以一次性替换所有匹配。同replace()一样,该方法接收两个参数。
很酷的站长
2022/11/23
1.7K0
【说站】js中replaceAll方法的实现
java中替换字符串特定字符replace,replaceAll,replaceFirst
String number = "123,456,5234,52345,63456,7456,7";
用户7886150
2021/04/07
2.6K0
hive weekofyear 怪异的姿势
今天在使用hive函数weekofyear的时候遇到一个奇怪的情况,原sql如下:
大数据工程师-公子
2019/03/14
7850
replaceAll坑
前两天遇到一个坑,在使用String.replace()和replaceAll的时候
阿超
2022/08/16
4860
Grep(Regex)中的正则表达式
grep是Linux中用于文本处理的最有用和功能最强大的命令之一。 grep在一个或多个输入文件中搜索与正则表达式匹配的行,并将每条匹配的行写入标准输出。
知忆
2021/06/02
2.8K0
Excel中6个怪异的公式,你知多少?
文 | 兰色幻想-赵志东 在excel中我们有时会看到一些奇奇怪怪的公式,为了帮助新手学习,兰色今天带大家一起盘点这些公式。 公式1:=Sum(表1:表20!A1) 揭密:这是Sum的多表求和公式 用
CDA数据分析师
2018/02/24
2.5K0
Excel中6个怪异的公式,你知多少?
【面试说】怪异的 JavaScript
在网上看到一个有趣的测试,访问地址 [1]。里面包含了 25 道选择题,每个都是一个简单的表达式,然后让你选择,都是一些 JavaScript 怪异行为的体现,最后网站生成答案和解析,帮助你更好的理解 JavaScript 怪异的行为。
GopalFeng
2022/08/01
3370
replace、replaceAll、replaceFirst
我相信很多人也跟我一样也有个误区,错把replace当成replaceFirst,把replaceAll当成replace
阿超
2022/08/21
1.4K0
正则表达式(四):Java regex
Java 作为一种被广泛使用的编程语言,从 jdk-1.4 开始,标准库提供了 java.util.regex 包来支持正则表达式的使用。正则在 Java 中的使用和 python 中略有区别,主要是使用方式上稍有差异。名称上的不同足可见一斑,python 中两个核心对象是 Pattern 和 Match ,而 Java 中则是 Pattern 和 Matcher。
zhipingChen
2018/09/13
1K0
mongodb 字符串查找匹配中$regex的用法
官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive
庞小明
2018/12/10
6.2K0
Java正则速成秘籍(一)之招式篇
目录 导读 概述 Pattern类 Matcher类 校验文本是否与正则规则匹配 案例:lookingAt vs find vs matches 查找匹配正则规则的文本位置 案例:使用start()、end()、group() 查找所有匹配正则条件的子序列 替换匹配正则规则的文本 案例:replaceFirst vs replaceAll 案例:appendReplacement、appendTail和replaceAl
用户1257215
2018/01/30
9660
Java中处理正则表达式的工具类——总有一个适合你
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.haohaosh.common.util.string.EmptyUtil; /** * @项目名 ssh * @功能 正则表达式工具类 * @类名 RegexUtil * @作者 Java自学通 * @日期 Aug 30, 20113:29:10 PM *
用户1289394
2018/02/27
1.5K0
python regex replace
正则匹配-直接内容替换 s = 'dsoheoifsdfscoopaldshfowefcoopasdfjkl;' ss = s.replace('coop','###') print(s,'\n',ss) dsoheoifsdfscoopaldshfowefcoopasdfjkl; dsoheoifsdfs###aldshfowef###asdfjkl; import re regex = re.compile(r'coop') # 正则匹配替换 regex.sub('$$$$$','sdlaf
py3study
2020/01/08
2.4K0
Java正则速成秘籍(一)之招式篇
静默虚空
2018/01/05
1.1K0
Java正则速成秘籍(一)之招式篇

相似问题

Java Regex replaceAll()

31

Java regex replaceAll多行

30

Java replaceAll到javascript regex

13

Java RegEx replaceAll抛出ArrayIndexOutOfBoundsException

34

Java: String.replaceAll(regex,替换);

1010
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文