2013-02-23 3 views
2

Я пытаюсь создать приложение, поэтому, когда пользователь пытается ввести букву caplock в поле JTextfield или что-то, это приведет к ошибке, информирующей пользователя , чтобы отключить капсюль.Предупреждение о Capslock

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

+2

Вы хотите удалить эти '' 's с конца ваших' if'-statements! – Johnsyweb

+2

Пара фигурных скобок в вашем коде не подходит. – Lion

ответ

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» как логическую, ваш старый код в порядке. Поскольку вы используете их как String, вы должны приравнивать, как показано ниже. Я советую вам использовать там булевский тип.

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) { 
       } 
      }); 
     } 
    }; 
Смежные вопросы