2016-05-05 9 views
0

Ich habe eine Zeichenfolge namens temp, die auf "void" gesetzt ist, um mit zu beginnen. Ich möchte, dass die while-Anweisung darauf wartet, dass der Benutzer einige Zeichen in das Textfeld eingibt, bevor er die while-Schleife erneut auswertet. Momentan gibt es "Enter Data" aus und setzt dann den Wert von temp auf null. Wie würde ich versuchen, dies zu tun?Java Textfield getText() wartet nicht auf Benutzereingabe

String temp = "VOID"; 

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

temp.equals("VOID") sein Wollen Sie damit sagen, dass Sie die Zeichenfolge nach jeder Zeicheneingabe verarbeiten wollen ?? – jr593

Antwort

0

Die getText() -Methode des Textfeld ein Sperrverfahren ist nicht Ihre Verwendung und damit so schnell ausgeführt wird, wie es genannt wird. Ihre beste Wette wäre höchstwahrscheinlich einen Zuhörer das Textfeld zu befestigen, zum Beispiel:

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

Der Hörer aufgerufen wird, wenn Sie die Eingabetaste drücken. Wenn Sie für jede einzelne Änderung im Textfeld hören müssen dann mit einem documentListener statt:

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

Mit JTextField Sie ein KeyListener zur Aufnahme von Tastaturereignissen (Anschläge) verwenden können. Etwas wie folgt aus:

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

Auch ist die Temp daher VOID sollte

while(UserScreen.textField.getText().equals("") && temp.equals("VOID"))