我正在使用Java + JavaFX编写一个小应用程序.
在控制器类我有我的PasswordField:
@FXML
PasswordField password;
Run Code Online (Sandbox Code Playgroud)
以及临时存储密码的字段:
private String rootPassword;
Run Code Online (Sandbox Code Playgroud)
然后我有一个方法来处理密码:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
以及按下"安装"按钮后启动的方法:
@FXML
private void handleCommand() {
handlePasswordField();
doAllTheOtherStuff();
Platform.exit();
}
Run Code Online (Sandbox Code Playgroud)
当我没有提供密码时,我会收到警报,但doAllTheOtherStuff()仍然会启动.doAllTheOtherStuff()如果没有提供密码,我该怎么做才能阻止它启动方法?
只需使方法返回一个布尔值:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在必要时检查出来:
@FXML
private void handleCommand() {
if(handlePasswordField()) {
doAllTheOtherStuff();
}
Platform.exit();
}
Run Code Online (Sandbox Code Playgroud)
最后的建议是将方法的名称更改为更清晰,但这只是可选的:
private boolean isPasswordValid() {
Run Code Online (Sandbox Code Playgroud)
然后if会更自然:
if(isPasswordValid()) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |