Javafx 将 ActionListener 添加到按钮

新手上路,请多包涵
button.setOnAction(new EventHandler<ActionEvent>() {
    @Override public void handle(ActionEvent e) {
        label.setText("Accepted");
    }
});

在上面的代码中,我们定义了按下按钮时会发生什么。这一切都很好,但我想创建新的 ActionListener,然后将其添加到我的按钮。通常在 JButton 中我可以像这样添加 ActionListener:

 button.addActionListener(someControllerClass.createButtonListener());

在上面的代码中,createButtonListener() 返回 ActionListener。

我的问题是:JButton addActionListener 的等价物是什么?

原文由 MertG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 457
2 个回答

我觉得这是我应该做的。创建处理程序:

 public EventHandler<Event> createSolButtonHandler()
{
    btnSolHandler = new EventHandler<Event>() {

        @Override
        public void handle(Event event) {
            System.out.println("Pressed!");
            biddingHelperFrame.getBtnSag().setVisible(false);
        }
    };
    return btnSolHandler;
}

将处理程序添加到按钮:

 btnSol.addEventHandler(MouseEvent.MOUSE_CLICKED, biddingHelperFrameController.createSolButtonHandler());

原文由 MertG 发布,翻译遵循 CC BY-SA 3.0 许可协议

例如,如果您想重用 EventHandler ,请按照 JavaFX 文档 中的描述定义它:

 EventHandler<ActionEvent> buttonHandler = new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        label.setText("Accepted");
        event.consume();
    }
};

您现在可以通过以下方式将定义的 buttonHandler 添加到按钮的 onAction 中:

 button.setOnAction(buttonHandler);

并引用提供完整性删除选项的文档:

要删除由便捷方法注册的事件处理程序,请将 null 传递给便捷方法,例如 node1.setOnMouseDragged(null).

为您带来:

 button.setOnAction(null)

该文档还提供了一些示例,说明如何为特定事件添加处理程序 - 这是一本很好的读物。

原文由 SSchuette 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题