什么是TextField的"内部"

4le*_*x1v 1 validation javafx

我有以下JavaFX代码:

final TextField textField = new TextField();
Run Code Online (Sandbox Code Playgroud)

EventHandler<ActionEvent>检查textField是否为空.问题是,textField.getText() == null或者textField.getText() == ""两者都返回false,但我没有在该字段中打印任何内容,因此它应该返回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
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

Ulu*_*Biy 5

textField.getText()返回一个Java String.Java String是一个Object所以你应该使用equals()方法而不是==比较字符串.==operator用于比较Java中的原始类型.要更好地理解这一点,请查看此内容如何比较Java中的字符串?用于Java中字符串比较的Q/A.
正如我所说,你可以textField.getText().equals("")用来检查字符串空虚,但它的常见用法是:

     if (textField.getText() != null && ! textField.getText().trim().isEmpty()) {
          // some code
     }
Run Code Online (Sandbox Code Playgroud)

其中!是布尔运算符.也不是trim()方法.这用于检查用户是否输入了空格,然后将它们视为空值.否则检查空格equals("")将失败.