gpt4 book ai didi

java - 从KeyEvent获取所有key到map

转载 作者:行者123 更新时间:2023-12-02 00:03:50 25 4
gpt4 key购买 nike

有没有办法从 java.awt.event.KeyEvent 获取所有键来映射?

我尝试使用反射,例如:

 for (Field f : KeyEvent.class.getDeclaredFields()) {
try
{
map.put((int)f.getInt(f), f.getName());
}
catch (IllegalArgumentException | IllegalAccessException ex) {
Logger.getLogger(KeyCollection.class.getName()).log(Level.SEVERE, null, ex);
}
}

但是我得到了:

java.lang.IllegalAccessException: Class com.util.KeyCollection can not access a member of class java.awt.event.KeyEvent with modifiers "private"

更新:这是我使用 assylias 代码示例得出的结果:

 for (Field f : KeyEvent.class.getDeclaredFields()) {
try {
if (java.lang.reflect.Modifier.isStatic(f.getModifiers()) && f.getType() == int.class && f.getName().startsWith("VK")) {
f.setAccessible(true);
map.put((int)f.get(null), f.getName());
}
} catch (IllegalArgumentException | IllegalAccessException ex) {
ex.printStackTrace();
}
}

最佳答案

使用您的方法,您需要首先使该字段可访问:

f.setAccessible(true);

但是您尝试获取该字段的方式也存在问题。下面的示例运行良好,您可以根据需要进行调整:

public static void main(String[] args) {
Map<Object, String> map = new HashMap<>();

for (Field f : KeyEvent.class.getDeclaredFields()) {
try {
if (java.lang.reflect.Modifier.isStatic(f.getModifiers())) {
f.setAccessible(true);
map.put(f.get(null), f.getName());
}
} catch (IllegalArgumentException | IllegalAccessException ex) {
ex.printStackTrace();
}
}
System.out.println(map);
}

关于java - 从KeyEvent获取所有key到map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14303157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com