好吧,在这被标记为可能的重复之前,我已经尝试了以下代码:
Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)
它总是对我返回 false [见下文]。有人可以确认这是否应该工作,我是否在滥用它,或者它是否已知被破坏?如果它实际上是坏的,有没有人有更好的方法来使用?
编辑:
好吧,刚刚又发现了一些东西。它似乎只是返回了我的程序启动开始时的状态。如果我打开程序启动它,它会说它打开,反之亦然。这是我的代码:
while (true) {
boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(
KeyEvent.VK_CAPS_LOCK);
System.out.println("Caps lock is now: " + (isOn ? "ON" : "off"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
这总是打印出它开始的任何内容
(例如,如果我从大写锁定开始,即使我之后立即将其关闭,它也会打印:
大写锁定现在:打开
大写锁定现在:打开
大写锁定现在:打开
大写锁定现在:打开
等等,如果我从它开始,无论如何它都会打印出来)