正如標題所示,我遇到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