0

I got an Application or a screen where I can send E-Mails. I also got a template screen as a whole new window. For e.g. I already write 3 email addresses in the TO TextField. I want them to stay, even if I change the whole stage because when I then go to the TemplatePicker Screen and pick a template, the initialize will be called again in the EmailController and all recipicients in the TextField are gone.

Code E-Mail:

public void buttonPickTemplate(ActionEvent event) throws IOException {
    Main.fxmlval.add("/application/controller/MailController/SendMail.fxml");
    FXMLLoader loader = new FXMLLoader(getClass().getResource("/application/controller/TemplateController/TemplateAuswahlFenster.fxml"));
    Parent parent = loader.load();
    TemplateController templateController = loader.<TemplateController>getController();
    templateController.setEmailVariablen(empfaengerField.getText(), ccField.getText(), bccField.getText(), betreffField.getText());
    Scene homeScreenScene = new Scene(parent);
    Stage window = (Stage) ((Node) event.getSource()).getScene().getWindow();
    window.setScene(homeScreenScene);
}

As you can see I tried to give the variables with a setter to the next screen and set them then back, but that would be horrible. Normally the method to change a screen always looks like this, if you have to throw no variables:

Parent detailsScreen = FXMLLoader.load(getClass().getResource("/application/controller/DetailsController/Details.fxml"));
Scene detailsScene = new Scene(detailsScreen);

Stage window = (Stage) ((Node) event.getSource()).getScene().getWindow();
window.setScene(detailsScene);

So and this methode in the TemplateController calls again the EmailController and FXML:

public void auswaehlen(ActionEvent event)throws IOException
{
    FXMLLoader loader = new FXMLLoader(getClass().getResource("../MailController/SendMail.fxml"));
    Parent homeScreen = loader.load();
    MailSender wpc=loader.<MailSender>getController();
    wpc.setTemplate(this.settemplate.getDatei());
    Scene homeScreenScene = new Scene(homeScreen);

    Stage window = (Stage) ((Node) event.getSource()).getScene().getWindow();

    window.setScene(homeScreenScene);
}

This is the email Screen which gets cleared when loading a template

CptDayDreamer
  • 1,526
  • 6
  • 25
  • 61

0 Answers0