我想知道Display类中的addFilter和addListener方法在概念上有什么区别?
最佳答案
我假设您是指org.eclipse.swt.widgets.Display
,如果是这样的话:
在正常情况下,addFilter
和addListener
都将被通知相同的事件,但是addFilter
将被更早调用。
它们的不同之处在于,添加了addFilter
的侦听器可以取消将事件调度到添加到addListener
的侦听器的方式,这是通过将event.type
设置为SWT.None
来实现的:
在addFilter
的javadocs中:
在handleEvent()中将事件的类型设置为SWT.None
方法可用于更改事件类型并停止后续的Java
监听器无法运行。因为事件过滤器先于其他运行
侦听器,事件过滤器可以阻止其他侦听器并设置
事件中的任意字段。因此,事件过滤器是
既强大又危险。通常应避免使用它们
性能,调试和代码维护原因。
请注意有关事件过滤器的最后一部分“ [...]既强大又危险。通常应避免使用它们。”
关于java - addFilter和addListener之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33539511/