首页 > 解决方案 > JavaFX:深拷贝 ScrollPane,所有子项在另一个窗口中使用

问题描述

我有一个主窗口,我在其中动态地从 DB 加载数据并在 a 中创建Buttons GridPane,然后在 a 中创建ScrollPane

现在我想ScrollPane在我的对话框弹出窗口中使用它的所有子项,这样我就不需要为我的按钮再次加载所有数据和图像以及所有这些东西,但是当我将 myScrollPane作为参数传递给秒窗口时我ScrollPane用旧的填充它的方法ScrollPane,效果很好,但是,ScrollPane我的第一个窗口变空了!

我认为发生这种情况是因为使用了相同的ScrollPane,有没有办法进行深度复制并对其所有子项使用完全相同ScrollPane但与我的旧的引用不同?

这是一个演示代码,仅用于解释我尝试做什么!

我从我的 Main FirstWindowController 调用方法 askForDrink() 并将其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吗??

标签: javajavafxreferencescrollpane

解决方案


推荐阅读