在JavaFX中动态添加组件

在JavaFX中动态添加组件,java,graph,javafx,nodes,dynamically-generated,Java,Graph,Javafx,Nodes,Dynamically Generated,更新:问题不正确,因为对该主题了解不足。对不起。 我正在尝试创建一个小应用程序,它显示一个包含节点和它们之间的连接的图形。节点和连接都很复杂,我的意思是它们可以有其他组件,比如标签 我有一个扮演画布角色的大窗格。我将从中添加和删除元素。问题是,我想使用按钮或上下文菜单动态地添加或删除图形元素。有点像是为图形绘制,我不知道如何实现它。 特别是在动态添加/删除机制方面,我非常需要帮助。我将非常感谢你的帮助 只需获取要添加内容的窗格的子列表,并在适当的操作发生时添加内容 FlowPane pane =

更新:问题不正确,因为对该主题了解不足。对不起。

我正在尝试创建一个小应用程序,它显示一个包含
节点和它们之间的
连接的图形。节点和连接都很复杂,我的意思是它们可以有其他组件,比如标签

我有一个扮演画布角色的大窗格。我将从中添加和删除元素。问题是,我想使用按钮或上下文菜单动态地
添加
删除
图形元素。有点像是为图形绘制,我不知道如何实现它。
特别是在
动态添加/删除机制方面,我非常需要帮助。我将非常感谢你的帮助

只需获取要添加内容的窗格的子列表,并在适当的操作发生时添加内容

FlowPane pane = new FlowPane();
Button addNode = new Button("Add");
addNode.setOnAction(e -> pane.getChildren().add(new Circle(10));
注:

  • 如果要使用而不是,则窗格没有内部布局,因此在添加到窗格时还需要适当地设置和属性

  • 如果要更改窗格中节点的渲染顺序(例如,哪些节点渲染在底部,哪些渲染在顶部),则可以通过在子列表中的适当位置添加新节点来完成此操作;例如,
    pane.getChildren().add(0,new Circle(10))
    将添加一个圆,该圆将在窗格的所有其他子项下方而不是顶部呈现


只需获取要添加内容的窗格的子列表,并在适当的操作发生时添加内容

FlowPane pane = new FlowPane();
Button addNode = new Button("Add");
addNode.setOnAction(e -> pane.getChildren().add(new Circle(10));
注:

  • 如果要使用而不是,则窗格没有内部布局,因此在添加到窗格时还需要适当地设置和属性

  • 如果要更改窗格中节点的渲染顺序(例如,哪些节点渲染在底部,哪些渲染在顶部),则可以通过在子列表中的适当位置添加新节点来完成此操作;例如,
    pane.getChildren().add(0,new Circle(10))
    将添加一个圆,该圆将在窗格的所有其他子项下方而不是顶部呈现


你说的“动态”是什么意思?您只需将节点添加到窗格的子列表中,就像在start方法中一样。问题是我通过FXML定义节点属性。如何为运行时创建之前不存在的对象定义属性?此外,我希望窗格可以滚动,在这种情况下,我无法获得子项列表。显然,您不打算在FXML中执行此部分:按钮和上下文菜单等的事件处理程序将在控制器中用Java编写。只需在处理程序中以正常方式创建节点并将其添加到相应的窗格中。真的不清楚你到底在问什么。你说的“动态”是什么意思?您只需将节点添加到窗格的子列表中,就像在start方法中一样。问题是我通过FXML定义节点属性。如何为运行时创建之前不存在的对象定义属性?此外,我希望窗格可以滚动,在这种情况下,我无法获得子项列表。显然,您不打算在FXML中执行此部分:按钮和上下文菜单等的事件处理程序将在控制器中用Java编写。只需在处理程序中以正常方式创建节点并将其添加到相应的窗格中。真的不清楚你到底在问什么。