1
我想知道Display类中addFilter和addListener方法在概念上有什么区别?addFilter和addListener之间的区别
我想知道Display类中addFilter和addListener方法在概念上有什么区别?addFilter和addListener之间的区别
我想你指的是org.eclipse.swt.widgets.Display
,如果是这样:
在正常情况下addFilter
和addListener
都将被通知的相同的事件,然而addFilter
将提前调用。
在那里他们不同的是,听众加入addFilter
可以被分派到听众取消事件添加addListener
,它通过设置event.type
到SWT.None
做到这一点:
从addFilter
的javadocs:
设定一个事件的类型从所述的handleEvent()内SWT.NONE可用于 方法来改变事件类型和停止从后续奔跑的Java 听众G。由于事件筛选器在其他 侦听器之前运行,事件筛选器既可以阻止其他侦听器,也可以在事件中设置任意字段。出于这个原因,事件过滤器是 既强大又危险。对于 性能,调试和代码维护的原因,通常应避免使用它们。
注意有关事件过滤器的最后一部分“[...]既强大又危险的。它们一般应避免[...]”
谢谢@Jonah – Learner