Javafx一个eventhandler来捕获它们吗?

Javafx一个eventhandler来捕获它们吗?,java,events,javafx,eventhandler,eventfilter,Java,Events,Javafx,Eventhandler,Eventfilter,我正在玩javafx,试图在我的一个场景中添加一个EventHandler或EventFilter(现在还不完全确定区别是什么)。它应该只检测任何输入,从鼠标点击到按键 我能够为鼠标点击编写一个EventFilter,但一般来说,我无法让它为任何事件工作 我目前的想法如下: scene.addEventFilter(Event.ANY, new EventHandler<InputEvent>() { @Override

我正在玩javafx,试图在我的一个场景中添加一个EventHandler或EventFilter(现在还不完全确定区别是什么)。它应该只检测任何输入,从鼠标点击到按键

我能够为鼠标点击编写一个EventFilter,但一般来说,我无法让它为任何事件工作

我目前的想法如下:

        scene.addEventFilter(Event.ANY, new EventHandler<InputEvent>() {
            @Override
            public void handle(InputEvent event) {
                System.out.println("Event detected! " + event.getSource());
            }
        });
scene.addEventFilter(Event.ANY,new EventHandler()){
@凌驾
公共无效句柄(InputEvent事件){
System.out.println(“检测到事件!”+Event.getSource());
}
});
但有了这个,我得到了addEventFilter高亮显示为红色的错误消息,如下所示:

The method addEventFilter(EventType<T>, EventHandler<? super T>) in the type Scene is not applicable for the arguments (EventType<Event>, new EventHandler<InputEvent>(){})

方法addEventFilter(EventType,EventHandler错误消息中显示的方法签名是

addEventFilter(EventType<T>, EventHandler<? super T>) 
或者,如果您特别想要捕获
InputEvent
s,请注意这是一个
EventType
,因此在这种情况下您可以这样做

scene.addEventFilter(InputEvent.ANY, new EventHandler<InputEvent>() {
    @Override
    public void handle(InputEvent event) {
        System.out.println("Event detected! " + event.getSource());
    }
});
(或相同,将
InputEvent.ANY
替换为
Event.ANY

请注意,在后一个版本中,所有类型都是自动推断的,因此您基本上避免了发生该错误的可能性。

“添加EventHandler或EventFilter(现在还不完全确定区别是什么)”–请查看。
scene.addEventFilter(InputEvent.ANY, new EventHandler<InputEvent>() {
    @Override
    public void handle(InputEvent event) {
        System.out.println("Event detected! " + event.getSource());
    }
});
scene.addEventFilter(InputEvent.ANY,  
        event -> System.out.println("Event detected! " + event.getSource())
);