java - JavaFX:深拷贝 ScrollPane,所有子项在另一个窗口中使用
问题描述
我有一个主窗口,我在其中动态地从 DB 加载数据并在 a 中创建Button
s 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
吗??
解决方案
推荐阅读
- javascript - 显示一次后引导警报未隐藏
- java - Tensorflow:从 Java 中保存 SavedModelBundle 模型
- java - 带五位小数的双精度格式
- asp.net-mvc - 无法加载文件或程序集“System.Web.WebPages.Razor,版本=2.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”
- java - 如何使用命令行创建一个 jar,其中一个类依赖于同一项目中的另一个类?(请不要使用构建工具!)
- prometheus-alertmanager - alertmanager:自定义接收器或带有自定义 POST 有效负载的 webhook 接收器?
- php - 如何在php中使用修改后的url访问文件?
- android - 活动恢复时无法检索 countDownTimer left timeMillis 值
- oracle - Obiee 度量仅显示空值
- asp.net-core - 在 HangFire 中运行存储过程