我想知道概念上Display类中addFilter和addListener方法之间的区别是什么?
答案 0 :(得分:1)
我假设您指的是org.eclipse.swt.widgets.Display
,如果是这样的话:
在正常情况下,addFilter
和addListener
都会收到相同事件的通知,但是addFilter
将会提前调用。
与它们不同的是,添加了addFilter
的侦听器可以取消将事件分派给添加了addListener
的侦听器,它通过将event.type
设置为{{SWT.None
来实现此目的。 1}}:
来自addFilter
的{{3}}:
在handleEvent()中将事件类型设置为SWT.None 方法可用于更改事件类型并停止后续Java 听众跑步。因为事件过滤器在其他之前运行 监听器,事件过滤器都可以阻止其他监听器和设置 事件中的任意字段。出于这个原因,事件过滤器是 既强大又危险。通常应避免使用它们 性能,调试和代码维护的原因。
请注意关于事件过滤器的最后一部分" [...]既强大又危险。一般应避免使用它们[...]