首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么keyChar和keyCode在KeyStroke中不相等?

为什么keyChar和keyCode在KeyStroke中不相等?
EN

Stack Overflow用户
提问于 2014-03-06 13:07:50
回答 1查看 201关注 0票数 1

我不明白为什么这样做是假的,而且被认为是不平等的。

代码语言:javascript
复制
KeyStroke test1 = KeyStroke.getKeyStroke('1');
KeyStroke test2 = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0);
System.out.println(test1.equals(test2));

在哪种情况下,这是不平等的,即这是一个特性还是一个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-06 13:13:40

在第一行中传递的是一个Character,而KeyEvent.VK_1是一个用十六进制(0x30)表示的Integer。数字和键由带有十六进制值的基元类型int表示。

例如:从0到9的数字是以这种方式表示的十六进制:

代码语言:javascript
复制
public static final int VK_0              = 0x30;
...
public static final int VK_9              = 0x39;

编辑

它们是不同的,因为第一个KeyStroke认为数字1是键入的

第二个KeyStroke正在考虑按下1。

它们不是不同的键,而是不同的动作

代码语言:javascript
复制
    KeyStroke test1 = KeyStroke.getKeyStroke('1', KeyEvent.KEY_LOCATION_UNKNOWN);
    KeyStroke test2 = KeyStroke.getKeyStroke(KeyEvent.VK_1, KeyEvent.KEY_LOCATION_UNKNOWN);

    System.out.println(test1.equals(test2));

这将是true

0参数KeyStroke.getKeyStroke(KeyEvent.VK_1, 0);表示常量KeyEvent.KEY_LOCATION_UNKNOWN

文件上说:

代码语言:javascript
复制
  A constant indicating that the keyLocation is indeterminate
  or not relevant.
  KEY_TYPED events do not have a keyLocation; this value
  is used instead.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22225508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档