У меня есть приложение или экран, на котором я могу отправлять электронные письма.Я также получил шаблон экрана как совершенно новое окно.Например, я уже пишу 3 адреса электронной почты в TO TextField.Я хочу, чтобы они остались, даже если я изменю всю стадию, потому что когда я затем перехожу на экран TemplatePicker и выбираю шаблон, инициализация будет вызвана снова в EmailController, и все получатели в TextField исчезнут.
Код 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);
}
Как видите, я пытался перевести переменные с помощью установщика на следующий экран и затем установить их обратно, но это было бы ужасно.Обычно метод изменения экрана всегда выглядит следующим образом, если вам не нужно выдавать переменные:
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);
Итак, и этот метод в TemplateController снова вызывает EmailController и 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);
}