【发布时间】:2012-08-14 18:57:46
【问题描述】:
好的,在这被标记为可能的重复之前,我已经尝试了以下代码:
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) {
}
}
而且它总是打印出它开始时的任何内容
(例如,如果我从大写锁定开始,即使我之后立即将其关闭,它也会打印:
现在大写锁定:开启
现在大写锁定:开启
现在大写锁定:开启
现在大写锁定:开启
等等,如果我一开始就关闭它,无论如何它都会打印出来)
【问题讨论】:
-
有效或无效取决于您的环境。它是什么? GUI 环境与命令行环境完全不同。
-
@Hot Licks 不确定您的意思,但请参阅我的编辑
-
@HotLicks 嗯。 -1 因为你很笨?我说不确定你的意思,意思是请进一步解释。你不会因为别人问你什么意思就给别人投反对票。
-
@HotLicks 我在 Windows 上从 Eclipse 运行,但我不希望操作系统影响它(这意味着如果你有适用于 Windows 的解决方案,我希望它可以在任何操作系统上运行)