2

我正在尝试创建一个应用程序,因此当用户尝试在 JTextfield 中输入大写字母或其他内容时,会出现错误,通知用户关闭大写锁定。

import java.awt.*;
import java.awt.event.*;

public class NewClass
{
    private static String check="false";

    public static void main(String[] args)
    {
        if ( Toolkit.getDefaultToolkit().getLockingKeyState (KeyEvent.VK_CAPS_LOCK ) );
        check="true";

        if(check.equals(true));
        System.out.println("Turn it off");
        {
        }
    }

如何使用布尔值

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

所以如果它是真实的显示信息来关闭它?

4

4 回答 4

3

这个

if(check.equals(true));

应该

if(check.equals("true"))

;从第一个 if 语句中删除,尽管您真正需要做的就是

if(Toolkit.getDefaultToolkit().getLockingKeyState (KeyEvent.VK_CAPS_LOCK ))
{
     System.out.println("Turn it off");
}
于 2013-02-23T02:51:05.927 回答
2

这应该工作!

boolean state= Toolkit.getDefaultToolkit()
                    .getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
于 2013-02-23T02:49:04.047 回答
2

这应该工作

if (Toolkit.getDefaultToolkit().getLockingKeyState(
        KeyEvent.VK_CAPS_LOCK)) {
    check = "true";
}
if (check.equals("true")) {
    System.out.println("Turn it off");
}

您的代码中有错误的地方,

1) if 语句中的分号。请记住,如果 if 块不会执行,则末尾是否有分号。

   if (true); {
     // wont be executed
   }

   if (true) {
     // will be executed    
   }

2)比较错误。它应该是。如果您将“检查”变量定义为布尔值,那么您的旧代码就可以了。由于您将它们用作字符串,因此您应该等同于如下。我建议你在那里使用布尔类型。

if (check.equals("true"))
于 2013-02-23T02:53:10.590 回答
0

您不应该只看 CapsLock,因为有人可以按 shift 键输入大写字母。向 JTextField 添加一个键侦听器并检查键入的字母。您甚至可以将大写字母更改为小写。

    final JTextField jTextField = new JTextField() {
        {
            addKeyListener(new KeyListener() {
                public void keyTyped(final KeyEvent e) {
                    System.out.println(e.getKeyChar());
                    System.out.println(e.getModifiers());
                }
                public void keyReleased(final KeyEvent e) {
                }
                public void keyPressed(final KeyEvent e) {
                }
            });
        }
    };
于 2013-02-23T05:55:57.457 回答