【问题标题】:How to implement a really custom event handler that can handle any EventType in JavaFX?如何实现一个真正自定义的事件处理程序,可以处理 JavaFX 中的任何 EventType?
【发布时间】:2012-09-30 09:12:31
【问题描述】:

我计划创建一个 EventHandler 类,它将为我的 JavaFX 类中的所有控件处理所有类型的事件。

例如,我添加了我的自定义事件处理程序类以通过以下方式处理动作事件,它工作正常:

userNameText.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
cmbBox.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
btn.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());

这是我的客户事件处理程序类代码:

public class DataChangeHandler implements EventHandler<ActionEvent> {    
    public void handle(ActionEvent event) {
            System.out.println("My Very Own Private Button Handler");
        }               
}

但是当我尝试将其中一个 addEventHandlers 更改为 MouseEvent 并通过以下方式修改主 EventHandler 类时,它会显示错误“接口事件处理程序不能通过不同的争论多次实现”:

userNameText.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
cmbBox.addEventHandler(MouseEvent.CLICKED, new DataChangeHandler());
btn.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());

public class DataChangeHandler implements EventHandler<ActionEvent>, EventHandler<MouseEvent> {    
    public void handle(ActionEvent event) {
            System.out.println("My Very Own Private Button Handler - ACTIONEVENT");
        }

        @Override
    public void handle(MouseEvent arg0) {
        System.out.println("My Very Own Private Button Handler - MOUSEEVENT");

    }
}

还有其他方法可以实现吗?请帮忙。提前致谢。

【问题讨论】:

    标签: javafx-2 javafx


    【解决方案1】:

    试试这个

    public class DataChangeHandler implements EventHandler<Event>{
        @Override
        public void handle(Event event) {
            System.out.println("My Very Own Private Handler For All Kind Of Events");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多