2016-05-05 4 views
0

私は最初に "void"に設定されたtempというStringを持っています。私は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

あるべきVOIDあります? – jr593

答えて

0

テキストフィールドのgetText()メソッドは、ブロッキングメソッドではないため、呼び出されるとすぐに実行されます。例えば、テキストフィールドにリスナーを付けるのが最も良いでしょう。

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

Enterを押すとリスナーが呼び出されます。あなたがテキストフィールド内のすべての単一の変更をリッスンする必要がある場合は、代わりにdocumentListenerを使用します。JTextField

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

あなたは、キーボードイベント(キーストローク)を受け取るためのKeyListenerを使用することができます。このような何か:

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

も一時したがって、あなたは、各文字入力の後の文字列を処理することを意味するかtemp.equals("VOID")

while(UserScreen.textField.getText().equals("") && temp.equals("VOID")) 
関連する問題