Передать переменную другому контроллеру - PullRequest
0 голосов
/ 09 октября 2019

Здравствуйте, мне нужно передать значения User и Pass другому контроллеру: как этот AdminController -> UserController.

В моем коде у меня есть это в AdminController:

private TextField fusuario;
    @FXML
   private PasswordField fcontrasena;
   String a;
   String b;



  public void captura() {
      a=fusuario.getText().toString();
      System.out.println("el usuario es x:"+a);
      b=fcontrasena.getText().toString();
      System.out.println("la contraseña es x:"+b);
  }

  public String setFusuario(String a) {
      this.fusuario.setText(a);
      return a;

     }
     public String setFcontrasena(String b) {
      this.fcontrasena.setText(b);
      return b;

     }

Это в моем UserController:

                       Stage administrador=new Stage();
                        FXMLLoader carga = new FXMLLoader(getClass().getResource("Admin.fxml"));
                        Parent StackPane =(Parent) carga.load();
                        AdminScreenController control = carga.<AdminScreenController>getController();
                        control.deshabilitarespuesta();
                        Scene scene = new Scene(StackPane);
                        scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
                        administrador.setScene(scene);
                        administrador.setTitle("AdminScreen");
                        Stage userstage=(Stage)comentarios.getScene().getWindow();
                        userstage.hide();
                        administrador.show();

Как передать эти значения, некоторую помощь или ориентацию?

1 Ответ

0 голосов
/ 15 октября 2019

Это просто, вам нужно объявить статическую переменную, подобную этой, в FIRST Controller

static String alertTYPE;

Затем в нашем коде проверки ERROR мы даем alertTYPE значение

   if(txtAmount.getLength() == 0){
        alertTYPE = "1";
        customAlert();
        txtAmount.requestFocus();
        return;
    }

Теперь мы вызываем метод customAlert (), который все еще находится в том же классе контроллера.
Это код метода customAlert

    public void customAlert() throws IOException{
    // This method displays the MODAL Alert alert.fxml and it is controlled by AlertController
    // =========================================================================================
    alertPane = FXMLLoader.load(getClass().getResource("alert.fxml"));// pane you are GOING TO

    //Scene Sscene = new Scene(merrorPane, 600, 400);
    // NO NEED TO RE-SIZE but this is code to change size 
    Scene Mscene = new Scene(alertPane);
    Mstage = new Stage();
    Mstage.initStyle(StageStyle.UNDECORATED);
    Mstage.setResizable(false);
    Mstage.initModality(Modality.APPLICATION_MODAL);
    Mstage.setScene(Mscene);

    Mstage.showAndWait();
}

Здесь, в AlertController, мы используем значение alertTYPE

    @Override
public void initialize(URL url, ResourceBundle rb) {

    if(alertTYPE.equals("1")){
        lblMessage.setText("Enter "+type+" Amount");
    }else if(alertTYPE.equals("2")){

Вы должны быть уверены, что контроллер, который вы собираетесь импортировать, статической переменной alertTYPE, как это

import static checkbook.CBManagerController.alertTYPE;

Это было далеко, но мы надеемся,Вы получаете идею
Одно слово предостережения, когда статические переменные объявлены и им присвоено значение, которое сохраняется до тех пор, пока переменная не получит новое значение или пока вы не установите ничего подобного для String alertTYPE = "";С большой силой приходит большая ответственность, ха-ха

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