javafx-2 - 如何在 JavaFX 中实现可以处理任何 EventType 的真正自定义事件处理程序?

标签 javafx-2 javafx

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

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

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 类时,它显示错误“The Interface eventhandler cannot be implemented more than once with different arguements”:

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");

    }
}

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

最佳答案

试试这个

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");
    }
}

关于javafx-2 - 如何在 JavaFX 中实现可以处理任何 EventType 的真正自定义事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12810185/

相关文章:

JavaFX 2 : Tables: Update display after having updated data

css - javafx-2,通过 CSS 删除焦点突出显示

具有独特字符串的 JavaFX TreeView

JavaFX + Gluon + MySQL + JDBC

java - 使用 JavaFX 显示另一个场景 [场景图问题]

JavaFX "Enter"和 "Tab"事件

java - 如何更新WebView控件的flash插件

css - 仅将 dropShadow 添加到网格 Pane JavaFx 2.2 的边框

java - 代号 "AWT-EventQueue-0"java.lang.UnsupportedClassVersionError : javafx/scene/media/MediaException has been compiled by a more recent version

java - 对象包含另一个对象。如何在TableView中显示呢?