我不明白为什么这会给出错误并且不被认为是平等的。
KeyStroke test1 = KeyStroke.getKeyStroke('1');
KeyStroke test2 = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0);
System.out.println(test1.equals(test2));
在哪种情况下这不相同,即这是一个特征还是一个错误?
答案 0 :(得分:1)
您在第一行传递的内容是Character
,KeyEvent.VK_1
是以{Hex(0x30)表示的Integer
。
数字和键由基元类型int
表示,带有十六进制值。
例如:从0到9的数字是以这种方式表示的六位数:
public static final int VK_0 = 0x30;
...
public static final int VK_9 = 0x39;
他们是不同的,因为第一个KeyStroke认为数字1是打字的
第二个KeyStroke正在考虑按下1。
它们不是不同的键,而是不同的行为
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
文档说:
A constant indicating that the keyLocation is indeterminate
or not relevant.
KEY_TYPED events do not have a keyLocation; this value
is used instead.