JavaFX: глубокое копирование ScrollPane со всеми детьми для использования в другом окне - PullRequest
0 голосов
/ 17 марта 2019

У меня есть главное окно, в котором я динамически загружаю данные из БД и создаю Button s внутри GridPane, который входит в ScrollPane!

Теперь я хочу использовать одно и то же ScrollPane со всеми его дочерними элементами во всплывающем окне моего диалогового окна, поэтому мне не нужно снова загружать все данные и изображения и все такое для моих кнопок, но когда я передаю свой ScrollPane в качестве аргумента метода окна секунд, где я заполняю его ScrollPane моим старым ScrollPane, все работает хорошо, НО, ScrollPane в моем первом окне становится пустым!

Я думаю, что это происходит из-за использования одного и того же ScrollPane, есть ли способ использовать Deep Copy и использовать точно такой же ScrollPane со всеми его дочерними элементами, но в отличие от моего старого ??

Вот демонстрационный код только для объяснения того, что я пытаюсь сделать!

Я вызываю метод askForDrink () из моего Main FirstWindowController и передаю ScrollPane в качестве аргумента!

Второй оконный контроллер:

public class SecondWindow_screenController {

@FXML
private ScrollPane secondsWindowScrollPane;

void askForDrink(Product product, ScrollPane scrollPaneFromFirstWindow) {

    Thread t = new Thread(() -> {
        // Here I set the GridPane from my old ScrollPane to the new ScrollPane
        Platform.runLater(()-> secondsWindowScrollPane.setContent(scrollPaneFromFirstWindow.getContent()));
    });
    t.setDaemon(true);
    t.start();
}

СКРИНШОТЫ ИЗ МОЕГО ПРИЛОЖЕНИЯ:

Первое окно

Открыто диалоговое окно второго окна

Второе диалоговое окно закрыто, напитки отсутствуют!

Когда я нажимаю на кнопки средней секции, появляется новое диалоговое окно, в котором я хочу получить те же напитки из моего первого окна! Вы можете видеть, как мои напитки ScrollPane становятся пустыми, когда открывается второе диалоговое окно, а затем, когда я закрываю второе окно, мои напитки ScrollPane все еще пусты!

Мне не нужна реализация кода, мне просто нужно знать, в чем заключается моя проблема. Действительно ли я использую ту же ссылку, что и ScrollPane ??

...