JavaFX动态添加按钮

问题描述:

我有fxml和控制器类。在控制器类中,我有someAction()方法,在fxml中,我将#someAction设置为一些Button的onAction。现在我想创建不是在fxml中的按钮,而是从java代码动态地创建按钮button = new Button()。我仍然加载fxml,我仍然有这个控制器与someAction()方法。我如何将someAction()设置为onAction作为我的按钮?从java代码我发现只有setOnAction(EventHandler<ActionEvent> eh)。有没有一种方法来指定类似fxml风格的onAction,只是告诉控制器类中的方法名?JavaFX动态添加按钮

的方法之一可以是:

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

然后

button.setOnAction(yourHandler); 

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

或者以相同的方式,定义业务逻辑方法并调用它以两种不同的动作事件处理程序。

+0

第二种方法听起来更实际:) – ItachiUchiha 2014-09-19 10:37:16

+0

@IchichiUchiha是的,你是对的。我只想在这里显示eventhandler的用法。 – 2014-09-19 11:04:07