如何在JavaFX中的场景图中克隆节点?

如何在JavaFX中的场景图中克隆节点?,第1张

如何在JavaFX中的场景图中克隆节点?

发生此错误是因为您试图将a的 相同
实例添加

Node
到另一个中
Node
。如果您从下面的示例中删除评论,您也会收到该错误。另一方面,循环会正常工作,因为在每次迭代中
Button
都会创建一个新实例

@Overridepublic void start(Stage stage) {    FlowPane root = new FlowPane();    // Results in error    // Button b1 = new Button("Button");    // root.getChildren().addAll(b1,b1);    for (int i = 0; i < 4; i++) {        Button b = new Button("Button");        root.getChildren().add(b);    }    Scene scene = new Scene(root, 50, 100);    stage.setScene(scene);    stage.show();}

您的窗格可能更复杂,但是您必须使用相同的原理。将负责创建窗格的代码放在单独的方法

getPane()
或类似方法中,并循环使用它来获取新实例。

JavaFX并没有为您提供现成的解决方案来制作的深层副本

Node
。如果您
Node
是静态创建的,则可以:

  1. 将负责创建它的代码放在单独的方法中,并在每次需要获取窗格的新实例时在整个应用程序中使用它。
  2. 在FXML文件中定义它,并在每次需要新实例时加载它。

如果您

Node
拥有由用户动态创建或修改的属性或子代,则情况会变得更加糟糕。在这种情况下,您必须检查其元素并自行重新创建它们。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5141399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存