在 JTextField 的工具提示上切换 Caps Lock

Toggle Caps Lock On Tooltip on JTextField

我想在登录时大写锁定在 Windows 上完成时警告用户。我有一个 JTextField 应该显示的地方。我搜索了论坛,发现我们使用 Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK) 检查键是开还是关。但是,我不确定如何将其附加到文本字段。

注意:我不想弹出一个对话框,显示大写锁定已打开的消息。

问题:如何在 JTextField 上显示大写锁定 warning/tool 提示?

这是我的代码:

public class CapsLockWarningJTextField {

private JFrame frame;

CapsLockWarningJTextField() {
    frame = new JFrame();
    frame.setSize(300, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new net.miginfocom.swing.MigLayout());
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);

    JTextField t = new JTextField(10);

    // if (Toolkit.getDefaultToolkit().getLockingKeyState(
    // KeyEvent.VK_CAPS_LOCK)) {
    // t.setToolTipText("Caps Lock ON");
    // }

    frame.add(t, "cell 0 0");

}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            new CapsLockWarningJTextField();

          }
      });
   }
}

按照这个问题中的建议:Value Change Listener to JTextField 您可以向您的 jTextField 添加一个侦听器。

在该侦听器中,您可以在文档更改时检查大写锁定是否打开,如果打开则发出警告。您很可能还想设置一个标志,这样您只显示一次警告,他们可能想输入部分或全部大写密码。