如何在Swing中检测大小写锁定是否切换?

17

我正在努力为我的工作场所构建一个更好的用户名/密码字段,并希望能够在他们输入时检测到大写锁定键是否开启,以便提醒。

这是可能的吗?如果可能的话,我想要在客户端输入第一个字母之前就检测到它。

是否有一种非特定平台的方法来实现这一点?

3个回答

27

尝试这个,来自java.awt.Toolkit,返回一个布尔值:

Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)

1
除了它不能在所有平台上运行。例如,在Linux的OpenJDK-6下会抛出UnsupportedException异常。:( - Luis Soeiro
正如其他人指出的那样,这在Linux上会引发错误。有趣的是,在Linux中必须有一种内部方法来实现它,因为当大写锁定键打开且屏幕被锁定时,Gnome会显示消息“您已打开大写锁定键”。也许操作系统有API,但Java尚未实现它们?使用jdk 1.6和fedora 14。 - Andy Dingfelder

1
除了Nick的回答之外,为了在用户按下键之前对此条件做出反应,您可以监听文本输入组件的焦点事件,并在组件获得焦点时测试大写锁定键。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接