我有一个问题,为什么这个KeyStroke的修饰语从128个变成130个?
package de.roth.jsona.keyevent;
import java.awt.event.InputEvent;
import javax.swing.KeyStroke;
import com.sun.glass.events.KeyEvent;
public class KeyStrokeBug {
public static void main(String[] args) {
// getKeyStroke(KeyEvent, modifier)
System.out.println(KeyEvent.VK_ENTER);
// Prints out 128
System.out.println(InputEvent.CTRL_DOWN_MASK);
KeyStroke k = KeyStroke.getKeyStroke(KeyEvent.VK_0, InputEvent.CTRL_DOWN_MASK);
// Prints out 130
System.out.println(k.getModifiers());
}
}发布于 2014-03-17 00:18:06
主要内容为mapNewModifiers方法中的KeyStroke方法。
private static int mapNewModifiers(int modifiers) {
if ((modifiers & InputEvent.SHIFT_DOWN_MASK) != 0) {
modifiers |= InputEvent.SHIFT_MASK;
}
if ((modifiers & InputEvent.ALT_DOWN_MASK) != 0) {
modifiers |= InputEvent.ALT_MASK;
}
if ((modifiers & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
modifiers |= InputEvent.ALT_GRAPH_MASK;
}
if ((modifiers & InputEvent.CTRL_DOWN_MASK) != 0) {
modifiers |= InputEvent.CTRL_MASK;
}
if ((modifiers & InputEvent.META_DOWN_MASK) != 0) {
modifiers |= InputEvent.META_MASK;
}
return modifiers;
}它将_DOWN_MASKs转换为较旧的修饰符_MASK。
例如..。
InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK生产192,在那里.
InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK生成195,这是两种情况下getModifiers值的值.
最后的值是按位或按位的过程的结果。
如果你看一下_MASK修饰符..。
InputEvent.SHIFT_MASK
InputEvent.CTRL_MASK
InputEvent.ALT_MASK
InputEvent.META_MASK
InputEvent.ALT_GRAPH_MASK这些农产品..。
1
2
8
4
32(请记住,还有鼠标按钮掩码)这些都是很容易被咬的或‘.’.‘
https://stackoverflow.com/questions/22444789
复制相似问题