我正在使用Java + JavaFX编写一个小型应用程序。
在控制器类中,我有PasswordField
:
@FXML
PasswordField password;
和一个用于临时存储密码的字段:
private String rootPassword;
然后我有一种方法来处理密码:
private void handlePasswordField() {
if (!password.getText().isEmpty()) {
this.rootPassword = password.getText();
} else {
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(nbtcInstaller.getPrimaryStage());
alert.setTitle("No password");
alert.setHeaderText("No password provided");
alert.setContentText("Please enter a new ROOT password");
alert.showAndWait();
}
}
以及按下“安装”按钮后启动的方法:
@FXML
private void handleCommand() {
handlePasswordField();
doAllTheOtherStuff();
Platform.exit();
}
当我不提供密码时,会收到警报,但是doAllTheOtherStuff()
仍会启动。在没有提供密码的情况下如何防止它启动doAllTheOtherStuff()
方法?
答案 0 :(得分:6)
只需使方法返回布尔值即可:
private boolean handlePasswordField() {
if (!password.getText().isEmpty()) {
this.rootPassword = password.getText();
return true;
} else {
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(nbtcInstaller.getPrimaryStage());
alert.setTitle("No password");
alert.setHeaderText("No password provided");
alert.setContentText("Please enter a new ROOT password");
alert.showAndWait();
return false;
}
}
然后在必要时进行检查:
@FXML
private void handleCommand() {
if(handlePasswordField()) {
doAllTheOtherStuff();
}
Platform.exit();
}
最后的建议是将方法的名称更改为更清晰,但这只是可选的:
private boolean isPasswordValid() {
然后if
会更自然:
if(isPasswordValid()) {