2012-05-02 102 views
1

我有以下JavaFX的代碼:什麼是「內部」的文本字段

final TextField textField = new TextField(); 

EventHandler<ActionEvent>與檢查文本框閹它是空的或不是。問題是,textField.getText() == nulltextField.getText() == ""都返回,但我沒有打印該字段中的任何內容,所以它應該返回true。


final TextField textField = new TextField(); 
browse.setOnAction(new EventHandler() { 
    @Override 
    public void handle(ActionEvent actionEvent) { 
     FileChooser fileChooser = new FileChooser(); 
     File chFile = fileChooser.showOpenDialog(stage); 
     if (chFile != null) { 
      // some code 
      if (textField.getText() != null && textField.getText() != "") { 
       // some code 
      } 
     } 
    } 
}); 
+0

可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

回答

5

textField.getText()返回java String。 Java StringObject因此您應該使用equals()方法而不是==來比較字符串。 ==運算符用於比較Java中的基本類型。爲了更好地理解這一點,請查看這個How do I compare strings in Java? Q/A用於Java中的字符串比較。
就像我說的,你可以使用textField.getText().equals("")檢查字符串空虛,但普遍使用的是:

 if (textField.getText() != null && ! textField.getText().trim().isEmpty()) { 
      // some code 
    } 

其中!是一個布爾NOT運算符。也不是trim()方法。這是爲了檢查用戶是否輸入了空格,然後將它們視爲空值。否則用equals("")檢查空白將會失敗。