как получить сообщение об успехе, чтобы оно не отображалось при возникновении ошибки - PullRequest
0 голосов
/ 02 мая 2019

Когда код выполняется, и я неправильно ввожу учетные данные, вместе с сообщением об ошибке появляется успешно добавленное сообщение, и я не уверен, почему это происходит.Нам нужно показать сообщение об ошибке и сообщение об успехе для нашей работы.Когда код запускается, и я неправильно ввожу учетные данные, вместе с сообщением об ошибке появляется успешно добавленное сообщение, и я не уверен, почему это происходит.Нам нужно показать сообщение об ошибке и сообщение об успешном выполнении нашей работы.

public class FXMLDocumentController implements Initializable {
   private FadeTransition fade = new FadeTransition(
        Duration.millis(5000)
   );

Employee em = new Employee();
@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
     TV_id.setCellValueFactory(new PropertyValueFactory<>("ID"));
    TV_fname.setCellValueFactory(new PropertyValueFactory<>("FirstName"));
    TV_lname.setCellValueFactory(new PropertyValueFactory<>("LastName"));
    TV_date.setCellValueFactory(new PropertyValueFactory<>("HireDate"));
    fade.setNode(label_success);
    fade.setFromValue(1.0);
    fade.setToValue(0.0);
    fade.setCycleCount(1);
    fade.setAutoReverse(false);
}


@FXML
private void handleButtonAddAction(ActionEvent event) {


    label_fail.setText("");
    label_success.setText("Successfully Added");
    int ID = 0, year = 0, month = 0, day = 0;
    String fname = "", lname = "";

    if (intValidation(TF_id) == true) {
        label_id.setTextFill(Color.web("#000000"));
        rec_id.setVisible(false);
        ID = Integer.parseInt(TF_id.getText());
    } else {
        rec_id.setVisible(true);
        label_id.setTextFill(Color.web("#ff0000"));
    }
    if (stringValidation(TF_fname) == true) {
        label_fname.setTextFill(Color.web("#000000"));
        rec_fname.setVisible(false);
        fname = TF_fname.getText();
    } else {
        rec_fname.setVisible(true);
        label_fname.setTextFill(Color.web("#ff0000"));
    }
    if (stringValidation(TF_lname) == true) {
        label_fname.setTextFill(Color.web("#000000"));
        rec_lname.setVisible(false);
        lname = TF_lname.getText();
    } else {
        rec_lname.setVisible(true);
        label_lname.setTextFill(Color.web("#ff0000"));
    }
    if (intValidation(TF_month) == true) {
        label_date.setTextFill(Color.web("#000000"));
        rec_month.setVisible(false);
        month = Integer.parseInt(TF_month.getText());
    } else {
        rec_month.setVisible(true);
        label_date.setTextFill(Color.web("#ff0000"));
    }
    if (intValidation(TF_day) == true) {
        label_date.setTextFill(Color.web("#000000"));
        rec_day.setVisible(false);
        day = Integer.parseInt(TF_day.getText());
    } else {
        rec_day.setVisible(true);
        label_date.setTextFill(Color.web("#ff0000"));
    }
    if (intValidation(TF_year) == true) {

        label_date.setTextFill(Color.web("#000000"));
        rec_year.setVisible(false);
        year = Integer.parseInt(TF_year.getText());
    } else {
        rec_year.setVisible(true);
        label_date.setTextFill(Color.web("#ff0000"));
    }
    if (!rec_id.isVisible() && !rec_fname.isVisible()
            && !rec_lname.isVisible() && !rec_month.isVisible()
            && !rec_day.isVisible() && !rec_year.isVisible()) {
        if (em.addEmployee(fname, lname, ID, year, month, day) == false) {
            label_fail.setText("No two employees can have the same ID.");
        } else {
            updateList();
            label_success.setVisible(true);
            fade.playFromStart();
            TF_id.setText("");
            TF_fname.setText("");
            TF_lname.setText("");
            TF_month.setText("");
            TF_day.setText("");
            TF_year.setText("");
        }

    }

}
 private void updateList() {
    TV_employee.getItems().clear();

}

private boolean intValidation(TextField txt) {
    if (txt.getText().isEmpty() || txt.getText() == null) {
        label_fail.setText("Error: You can not leave any fields blank.");
        return false;
    }
    try {
        int x = Integer.parseInt(txt.getText());
        return true;
    } catch (NumberFormatException e) {
        label_fail.setText("Error: " + txt.getText() + " is not an integer.");
        return false;
    }
}

private boolean stringValidation(TextField txt) {
    if (txt.getText().isEmpty() || txt.getText() == null) {
        label_fail.setText("Error: You can not leave any fields blank.");
        return false;
    } else if (txt.getText().matches(".*\\d.*")) {
        String invalidCharacters = txt.getText().replaceAll("[^0-9]", "");
        label_fail.setText("Error: You've entered illegal characters in a text field. "
                + "Please remove \"" + invalidCharacters + "\" "
                        + "from the highlighted field or enter a different value.");
        return false;
    } else {
        return true;
    }
}

}

1 Ответ

0 голосов
/ 02 мая 2019

То, что я ожидаю, происходит: label_success всегда виден.В начале у него нет текста, поэтому вы не увидите его видимым, но это меняется, когда вы добавляете текст в метку в начале метода.Замирание отвечает за установку его непрозрачности на 0. Но когда вы вводите недопустимое значение, замирание никогда не запускается, поэтому оно остается на начальном значении, что означает, что оно будет видимым.Вы можете решить эту проблему, переместив label_success.setText("Successfully Added"); в заключительном операторе if чуть выше того места, где вы начинаете свое затухание.

Также вы, вероятно, можете упростить свою жизнь, отделив валидацию ввода от настройки визуалаиз меток в разные методы, как много сейчас происходит внутри одного и того же метода.

...