Java文本字段getText()不等待用户输入



我有一个名为temp的字符串,它的开头设置为"void"。我希望while语句等待用户在文本框中输入一些字符,然后再重新评估while循环?目前,它打印"输入数据",然后继续将temp的值设置为null。我该怎么做呢?

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

您使用的textfield的getText()方法不是一个阻塞方法,因此一旦调用就会立即执行。你最好的选择是在文本字段中附加一个监听器,例如:

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

当你按下回车键时,听众会被呼叫。如果您需要监听文本字段中的每一个更改,请改用documentListener:

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

使用JTextField,可以使用KeyListener接收键盘事件(击键)。类似这样的东西:

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

温度也是VOID,因此应为temp.equals("VOID")

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

相关内容

  • 没有找到相关文章