当前位置: 首页 > 知识库问答 >
问题:

如何实现一个真正自定义的事件处理程序,可以处理JavaFX中的任何事件类型?

韶景曜
2023-03-14

我计划创建一个单独的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");
        }               
}

但是当我尝试将addEventHandler之一更改为MouseEvent并按以下方式修改主EventHandler类时,它会显示错误“Interface 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");

    }
}

有没有其他方法可以达到这个目的?请帮帮忙。提前感谢。

共有1个答案

乐正明辉
2023-03-14

试试这个

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");
    }
}
 类似资料:
  • 问题内容: 谁能给我一个创建事件和处理程序的自定义集的示例。假设您有一个Person对象,您希望小部件知道它是否已更新。 您创建了一个HandlerManager,现在您必须创建一个Event和一个Handler。您将如何定义这些类,以便可以订阅和引发事件? 大多数事件都是基于DOM的,而我想创建一些自定义事件和处理程序,这些事件和处理程序可以在任何基于浏览器的事件之外触发。 问题答案: 这是一个

  • 每个人 都。我一直在寻找这个问题,但我在这里没有找到它,所以我想它真的很简单。 我正在用JavaFX创建一个非常简单的应用程序,只需一个按钮。现在我想处理它的事件(如按下或释放),但当我在互联网上看到示例时,它们都使用匿名类(每个事件都有一个不同的类),这在我看来让代码变得肮脏。这就是为什么我想将事件处理程序放在一个单独的类中,并将它们添加到按钮中。 问题是我不知道我是否必须为每个事件创建一个不同

  • 在JavaFX中,是否可以从一个类中处理多个事件类型(例如ActionEvent、MouseEvent等),而无需匿名事件处理程序?我尝试了以下操作,但这只是产生了一个编译时错误。

  • 问题内容: 我在JavaFX中有一个舞台,可以通过多种方式关闭该舞台,方法是单击红色(X)或通过一个调用 无论舞台如何关闭,我都希望在舞台关闭之前(或之后)执行操作。 如果我使用以下代码: 然后当我单击(X)时调用处理程序,但当我调用 不同之处在于,他希望在整个应用程序关闭时调用处理程序,因此可以覆盖的方法。但是,我并没有关闭整个应用程序,只是一个阶段。并且没有重写的方法。 谢谢你的帮助。 问题答

  • 我已经创建了一个自定义钩子,它从服务器获取数据,向存储发送分派,并返回数据。如果我想在我的应用程序中列出所有评论,它是可用的,但是,我想在我需要获取所有评论回复的组件中重用它,而这应该只在单击某个按钮时发生。 这是下面的钩子。 在我的组件里面,我需要在点击按钮时获取回复 如果我把call放在处理程序中,我会得到一个错误,不能在那里调用hook,但是我只需要在单击按钮时调用它,所以我不知道是否有办法

  • 本文向大家介绍Java事件处理机制(自定义事件)实例详解,包括了Java事件处理机制(自定义事件)实例详解的使用技巧和注意事项,需要的朋友参考一下 Java事件处理机制 java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event source:具体的事件源,比如说,你点