Переменная пуста, но на самом деле это не так? - PullRequest
0 голосов
/ 14 февраля 2019

Я пишу небольшое приложение с использованием 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(), если пароль не указан?

1 Ответ

0 голосов
/ 14 февраля 2019

Просто заставьте метод возвращать логическое значение:

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()) {
...