JavaFX 动态添加按钮

Posted

技术标签:

【中文标题】JavaFX 动态添加按钮【英文标题】:JavaFX dynamically add buttons 【发布时间】:2014-09-19 09:42:16 【问题描述】:

我有 fxml 和控制器类。在控制器类中,我有 someAction() 方法,在 fxml 中,我将 #someAction 设置为某些按钮的 onAction。现在我想不在 fxml 中创建按钮,而是从 java 代码动态创建为button = new Button()。我仍然加载 fxml,并且我仍然有这个带有 someAction() 方法的控制器。如何将someAction() 设置为按钮的 onAction?从 java 代码中我只找到了setOnAction(EventHandler<ActionEvent> eh)。有没有办法以类似 fxml 的方式指定 onAction,只需在控制器类中告诉方法名称?

【问题讨论】:

【参考方案1】:

其中一种方法可以是:

private EventHandler<ActionEvent> yourHandler = new EventHandler<>() 
     public void handle(ActionEvent event) 
         // your logic
     
;

然后

button.setOnAction(yourHandler);

public void someAction(ActionEvent event) 
    yourHandler.handle(null);

或者以同样的方式,定义一个业务逻辑方法并在两个不同的动作事件处理器中调用它。

【讨论】:

第二种方法听起来更实用:) @ItachiUchiha 是的,你是对的。我也只是想在这里展示一下eventhandler的用法。

以上是关于JavaFX 动态添加按钮的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaFX 中将元素动态添加到固定大小的 GridPane

向 Tableview Javafx 动态添加和删除 tablecolumn

JavaFX 面积图并在光标后添加动态标签

JavaFX 动态地将标签添加到窗格,在 fxml 文件中定义

JavaFX 使用 fx:id 或 id 将节点动态添加到窗格

javafx动态地在新选项卡中打开一个新的fxml文件