Java:change";VK_UP";到KeyEvent.VK_UP
我需要将Java中的Java:change";VK_UP";到KeyEvent.VK_UP,java,parsing,hashmap,keyevent,Java,Parsing,Hashmap,Keyevent,我需要将Java中的“VK_UP”(或者干脆“UP”)之类的文本更改/解析为KeyEvent.VK_UP常量。我不想改用数字38,因为它将保存在.txt配置文件中,这样任何人都可以重写它 最好的解决方案是使用此hashmap: HashMap<String, Integer> keyConstant; HashMap键常量; 其中key是名称(“VK_UP”),value是key code(38) 现在的问题是:如何在不花费整个晚上手动创建地图的情况下获取此地图?您可以使用反射
“VK_UP”
(或者干脆“UP”
)之类的文本更改/解析为KeyEvent.VK_UP
常量。我不想改用数字38
,因为它将保存在.txt
配置文件中,这样任何人都可以重写它
最好的解决方案是使用此hashmap:
HashMap<String, Integer> keyConstant;
HashMap键常量;
其中key是名称(“VK_UP”
),value是key code(38
)
现在的问题是:如何在不花费整个晚上手动创建地图的情况下获取此地图?您可以使用反射 以下几行中的一些应该可以工作,SAN异常处理:
public static int parseKeycode(String keycode) {
// We assume keycode is in the format VK_{KEY}
Class keys = KeyEvent.class; // This is where all the keys are stored.
Field key = keys.getDeclaredField(keycode); // Get the field by name.
int keycode = key.get(null); // The VK_{KEY} fields are static, so we pass 'null' as the reflection accessor's instance.
return keycode;
}
或者,您可以使用简单的一行:
KeyEvent.class.getDeclaredField(keycode).get(null);
反射