JavaFX Изменение этапа / сцены без сброса значений в предыдущих окнах - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть приложение или экран, на котором я могу отправлять электронные письма.Я также получил шаблон экрана как совершенно новое окно.Например, я уже пишу 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);
}

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

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