为什么要new KeyStroke(k,m).getModifiers()!=m?

问题描述 投票:0回答:1

我现在正在努力向我的应用程序添加一些全局快捷键。

首先,我写了一个方法将原生修饰符代码翻译成swing的修饰符代码,添加了全局原生hook,但是没有用。然后,我添加了打印语句并遇到了意外的结果。

代码:

int m=KeyEvent.SHIFT_DOWN_MASK|KeyEvent.CTRL_DOWN_MASK|KeyEvent.ALT_DOWN_MASK;
System.out.println(m+" "+KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT,m).getModifiers());

输出:

704 715

所以...为什么?为什么修饰符 set 不是 getter 返回的内容? 我想,它应该会回来

704 704

java swing awt
1个回答
0
投票

不久前,旧修饰符

ALT_MASK
CTRL_MASK
META_MASK
SHIFT_MASK
被新修饰符所取代:
ALT_DOWN_MASK
CTRL_DOWN_MASK
META_DOWN_MASK
SHIFT_DOWN_MASK
.
old 已弃用(Java 9),但仍可用于兼容性。
调用
KeyStroke.getKeyStroke(int, int)
会将相应的缺失修饰符添加到给定的修饰符中,因此 old 修饰符new 修饰符 都可以使用。

OpenJDK 源代码:

AWTKeyStroke:771

© www.soinside.com 2019 - 2024. All rights reserved.