2013-02-23 73 views
2

我试图创建一个应用程序,所以当用户试图在JTextfield中输入一个大写字母 字母或者它会带来一个错误,通知用户 关闭大写锁定。Capslock warning

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)); 

,所以如果它是真实的表演,将其关闭消息的布尔?

+1

不应该是'if(check.equals(“true”))'? – mre 2013-02-23 02:49:19

+2

你想从你的'if'语句的末尾删除这些';'! – Johnsyweb 2013-02-23 02:50:14

+2

代码中的一对大括号不匹配。 – Lion 2013-02-23 02:50:19

回答

2

这应该工作!

boolean state= Toolkit.getDefaultToolkit() 
        .getLockingKeyState(KeyEvent.VK_CAPS_LOCK); 
3

if(check.equals(true)); 

应该

if(check.equals("true")) 

并从第一if语句的;,但你真正需要做的是

if(Toolkit.getDefaultToolkit().getLockingKeyState (KeyEvent.VK_CAPS_LOCK)) 
{ 
    System.out.println("Turn it off"); 
} 
2

这个肩膀d工作

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)比较错误。它应该是。如果你已经将“check”变量定义为布尔值,那么你的旧代码很好。既然你使用他们作为字符串,你应该等同于下面。我建议你在那里使用布尔类型。

if (check.equals("true")) 
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) { 
       } 
      }); 
     } 
    };