我有fxml和controller类。在控制器类中,我有someAction()方法,在fxml中,我将#someAction设置为某些Button的onAction。现在,我想创建按钮不是在fxml中,而是从Java代码动态创建为button = new Button()。我仍然加载fxml,并且仍然具有使用someAction()方法的此控制器。如何将someAction()设置为按钮的onAction?从Java代码中,我仅找到setOnAction(EventHandler<ActionEvent> eh)。有没有一种方法可以像fxml一样指定onAction,仅在控制器类中告诉方法名称?

最佳答案

方法之一可以是:

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


然后

button.setOnAction(yourHandler);




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


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

09-12 16:10