addFilter和addListener之间的区别

时间:2015-11-05 08:14:36

标签: java eclipse swt jface

我想知道概念上Display类中addFilter和addListener方法之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

我假设您指的是org.eclipse.swt.widgets.Display,如果是这样的话:

在正常情况下,addFilteraddListener都会收到相同事件的通知,但是addFilter将会提前调用。

与它们不同的是,添加了addFilter的侦听器可以取消将事件分派给添加了addListener的侦听器,它通过将event.type设置为{{SWT.None来实现此目的。 1}}:

来自addFilter的{​​{3}}:

  

在handleEvent()中将事件类型设置为SWT.None   方法可用于更改事件类型并停止后续Java   听众跑步。因为事件过滤器在其他之前运行   监听器,事件过滤器都可以阻止其他监听器和设置   事件中的任意字段。出于这个原因,事件过滤器是   既强大又危险。通常应避免使用它们   性能,调试和代码维护的原因。

请注意关于事件过滤器的最后一部分" [...]既强大又危险。一般应避免使用它们[...]