Загрузка другой сцены, если отмечены некоторые кнопки - PullRequest
0 голосов
/ 05 мая 2020

Итак, я пытаюсь загрузить три определенных c сцены, если нажимаются некоторые кнопки. Это простой экран загрузки, который вызывает три другие сцены с 2 текстовыми полями (txtUser, txtPass) и 2 кнопками (btnCancel, btnEnter) и 2 кнопками выбора (btnStd, btnProf), которые загружают af xml отдельно - третье f xml если оба нажаты отключены

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

@FXML
private void onActionBtnEnter(ActionEvent event) {

    try {
            if (txtUser.getText() == null || txtUser.getText().isEmpty()) {
                new Message().showModal(Alert.AlertType.ERROR, "User validation",
                (Stage) btnEntrar.getScene().getWindow(),"Needs username");}

            else if (txtPass.getText() == null || txtPass.getText().isEmpty()) {
                new Message().showModal(Alert.AlertType.ERROR, "Password validation",
                (Stage) btnEntrar.getScene().getWindow(), "Needs password");}

            else {
                FlowController.getInstance().goMain(); //this is one of the fxlm views to load
                ((Stage) btnEnter.getScene().getWindow()).close(); //closes the login and loads the scene
            }
        }       
    catch (Exception ex) {
        Logger.getLogger(LandingViewController.class.getName()).log(Level.SEVERE, "Login error.", ex);
            }
}

Это работает нормально, но вместо выбора c f xml для загрузки он загружает только goMain (), который содержит administratorview.f xml. Я также выполнил goMain2 () и goMain3 ().

Для студентов должен загружаться файл studentview.f xml. Для профессоров profesorview.f xml. Следующий код для методов и действий кнопок

@FXML
private void onActionBtnStd(ActionEvent event) {
    btnStd.setDisable(true);
    txtPass.setDisable(false);
    txtUser.setDisable(false);
}

@FXML
private void onActionBtnProf(ActionEvent event) {
    btnProf.setDisable(true);
    txtPass.setDisable(false);
    txtUser.setDisable(false);
}

Пока все хорошо, но загружает только один f xml, потому что они еще не вызываются. Итак, я предполагаю, что в действии btnEnter должен быть какой-то код, который я пробовал, как в (то же событие, что и выше):

@FXML
private void onActionBtnEntrar(ActionEvent event) {

else if (btnStd.getValue().isDisabled()){ //added else if but I don't know how to call a boolean property in a void
                    FlowController.getInstance().goMain(); 
                    ((Stage) btnEnter.getScene().getWindow()).close();}

else if (btnProf.getValue().isDisabled()){ 
                    FlowController.getInstance().goMain2(); 
                    ((Stage) btnEnter.getScene().getWindow()).close();}

else if (btnProf.getValue().isDisabled() && btnStd.getValue().isDisabled()){ 
                    FlowController.getInstance().goMain3(); 
                    ((Stage) btnEnter.getScene().getWindow()).close();}

1 Ответ

0 голосов
/ 05 мая 2020

Глупый, я добавил .getValue () в оператор if - все, что нужно было, это поместить компонент .isDisabled () или .isEnabled (), если он содержит логическое значение. Однако он не загружает административный просмотр, если оба отмечены как отключенные - он загружает студенческий просмотр. Дальнейшее расследование ...

Edit: Хорошо, последнее "else if" должно вызываться первым, чем два других. Работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...