正如标题所示,我遇到Toolkit.getDefaultToolkit().getLockingKeyState(...)
从不更新的问题。它在我第一次查询时报告正确,然后当我使用键盘改变状态时,变化永远不会反映出来。Toolkit.getDefaultToolkit()。getLockingKeyState(...)在程序执行期间从不更新
这是有意设计的(在API文档中看起来并不如此),一个错误,或者是否有我的代码?
这里是一个简短的,自包含的例子来说明这个问题:
public class LockingStateIssue {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override public void run() {
if (Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_NUM_LOCK)) {
System.out.print("*");
} else {
System.out.print(".");
}
}
}, 0, 200);
}
}
运行时,我的Windows机器上,使用Java 1.7.0_45,它打印无论是.......
或*********
取决于初始状态num lock键,但从来没有像我期望的那样混合像..**.**
,当切换按钮时。
只是测试它。你是对的。我也得到相同的行为,也为VK_CAPS_LOCK。 – datahaki
[我怀疑没有AWTEventListener返回合理的值](http://bugs.java.com/view_bug.do?bug_id=4414164) – mKorbel
听起来像是一个bug,或者如果按照设计,它应该在API文档 – haraldK