2013-02-23 43 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) { 
       } 
      }); 
     } 
    };