【问题标题】:How to invoke EventHandler from a different class in JavaFX如何从 JavaFX 中的不同类调用 EventHandler
【发布时间】:2018-08-17 05:01:17
【问题描述】:

假设我有以下代码,用于在有人按下按钮 B0 时触发事件:

        B0.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {

         //DoSomething

        }

    });

这很好用,在大多数情况下更容易,但是当我需要为 20 多个按钮执行此操作时,很难为每个按钮创建单独的方法,因此更优选的工作方式将是大量的 if声明在不同的类中规定事件的来源(组织目的)。

我需要知道的是如何在一个单独的类(例如下面的代码)中从 this 调用 EventHandler 并获得有效的返回,以便程序可以继续。

public class Logic{

   public final EventHandler<ActionEvent> getOnAction() {
    return null;
  }

}

【问题讨论】:

  • EventHandler 是一个接口,为什么不实现呢?
  • @MadProgrammer 我之前尝试过,但在我给出的第一个代码示例中调用它时遇到了障碍。你能解释一下你会怎么做吗?

标签: java events javafx event-handling


【解决方案1】:

EventHandler&lt;T&gt;interface,为什么不只是 implement 呢?

public class SupaDupaHandler implements EventHandler<ActionEvent> {

    @Override
    public void handle(ActionEvent event) {
    }

}

然后在你的代码中你可以这样做......

SupaDupaHandler handler = new SupaDupaHandler();
btn.setOnAction(handler);
// And repeat 20 times

或者直接...

btn.setOnAction(new SupaDupaHandler());

根据你的需要

【讨论】:

  • 伙计,我不知道为什么我一开始不这样做。再次感谢您的帮助!我确实相信你过去确实帮助过我。
  • 欢迎来到森林,注意树木;)
猜你喜欢
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2018-08-13
  • 2012-02-22
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多