Как установить одну кнопку, чтобы показать разные результаты с всплывающими окнами? (JavaFX) - PullRequest
0 голосов
/ 14 марта 2020

Я делаю какую-то программу, в которой у меня есть поле ввода и кнопка показа результата (SRB). Когда я помещаю некоторые данные в это поле ввода и нажимаю SRB, я хочу вызвать всплывающее окно с некоторым результатом.

Например:

  • , если я поставлю 1-5 в поле и нажмите SRB, я хочу вызвать всплывающее окно с текстом «Hello»

  • , если я введу 6-10 в поле и нажмите SRB, я хочу вызвать всплывающее окно с текстом » Пока "

  • , если я введу" chel "в поле и нажму SRB, я хочу вызвать всплывающее окно с текстом" Some Stuff "

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

Как я могу это сделать?

Здесь я попытался сделать это, вызывая разные всплывающие окна. Но он выключился, как я поставил 1 - он вызывает popUp.f xml, который я не хочу для чисел.

Вот мой контроллер

public class FirstQuestionController {

    @FXML
    private ResourceBundle resources;

    @FXML
    private URL location;

    @FXML
    private TextField answerField;

    @FXML
    private Button nextButton;

    @FXML
    void initialize() {

        nextButton.setOnAction(event->{
            Calculations calculations = new Calculations();
            String answer = answerField.getText().trim();
            if (answer.contains("chel")) {
                calculations.ageResults(answer);
                Stage stage = new Stage();
                Parent root = null;
                try {
                    root = FXMLLoader.load(getClass().getResource("/sample/popUp.fxml"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                stage.setScene(new Scene(root));
                stage.initModality(Modality.APPLICATION_MODAL);
                stage.initOwner(nextButton.getScene().getWindow());
                stage.showAndWait();
            } else {
                answer = answerField.getText()
                int age = Integer.parseInt(answer);
                Stage stage = new Stage();
                Parent root = null;
                try {
                    root = FXMLLoader.load(getClass().getResource("/sample/agePopUp.fxml"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                stage.setScene(new Scene(root));
                stage.initModality(Modality.APPLICATION_MODAL);
                stage.initOwner(nextButton.getScene().getWindow());
                stage.showAndWait();
            }


        });

    }
}

Класс расчета предназначен для проверки ввода. Если поле ввода имеет 1-5, то оно показывает результат "Hello" et c.

1 Ответ

0 голосов
/ 14 марта 2020

Вам нужно использовать Регулярные выражения для обработки каждого случая в зависимости от ввода:

if(answer.matches(".*chel.*"))
{
    // "Some stuff"
} else if(answer.matches("[1-5]"))
{
    // "Hello"
} else if(answer.matches("[6-9]|10"))
{
    // "Bye"
} else
{
    //none of the above
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...