2016-05-05 2 views
0

У меня есть строка, называемая temp, для которой задано значение «void». Я хочу, чтобы оператор while ожидал ввода пользователем некоторых символов в текстовое поле, прежде чем повторять оценку цикла while? В настоящее время он печатает «Enter Data», а затем просто устанавливает значение temp равным null. Как я буду пытаться это сделать?Java Textfield getText() не ждет ввода пользователя

String temp = "VOID"; 

while(UserScreen.textField.getText().equals("") && temp == "") 
{ 
    UserScreen.messageAppend("Enter data"); 
    temp = UserScreen.textField.getText(); 
    UserScreen.messageAppend(temp);  
} 
+0

Вы имеете в виду, что вы хотите обработать строку после каждого ввода символов ?? – jr593

ответ

0

Метод GetText() из текстового поля, используя свой метод, разве блокирующий, и таким образом, будет выполнена, как только она называется. Лучше бы, скорее всего, будет прикрепить слушателя к текстовому полю, например:

textField.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     temp = UserScreen.textField.getText(); 
     UserScreen.messageAppend(temp);  
    } 
}); 

Слушатель вызывается при нажатии клавиши ввода. Если вам нужно слушать для каждого изменения в текстовое поле, то используйте вместо DocumentListener:

textField.getDocument().addDocumentListener(new DocumentListener() { ... }); 
0

С JTextField вы можете использовать KeyListener для приема событий клавиатуры (нажатия клавиш). Что-то вроде этого:

KeyListener keyListener = new KeyListener() { 
    public void keyPressed(KeyEvent keyEvent) { 
    // here you validation 
    } 
} 
nameTextField.addKeyListener(keyListener); 

Также Temp ПУСТА поэтому должен быть temp.equals("VOID")

while(UserScreen.textField.getText().equals("") && temp.equals("VOID")) 
Смежные вопросы