首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:将"VK_UP“改为KeyEvent.VK_UP

Java:将"VK_UP“改为KeyEvent.VK_UP
EN

Stack Overflow用户
提问于 2013-06-29 03:12:36
回答 1查看 518关注 0票数 1

我需要将"VK_UP" (或简称为"UP")之类的文本更改/解析为Java语言中的KeyEvent.VK_UP常量。我不想使用数字38,因为它将被保存在.txt配置文件中,这样任何人都可以重写它。

最好的解决方案是有这样的hashmap:

代码语言:javascript
复制
HashMap<String, Integer> keyConstant;

其中,键是名称("VK_UP"),值是键代码(38)。

现在的问题是:我如何才能在不花费整个晚上的时间手动创建地图的情况下获得它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-29 03:25:38

您可以使用反射。

以下几行中的某些内容应该可以工作,即无异常处理:

代码语言:javascript
复制
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;
}

或者,您可以使用简单的一行代码:

代码语言:javascript
复制
KeyEvent.class.getDeclaredField(keycode).get(null);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17372011

复制
相关文章

相似问题

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