【问题标题】:Difference between addFilter and addListeneraddFilter 和 addListener 的区别
【发布时间】:2015-11-05 16:25:56
【问题描述】:

我想知道Display类中addFilter和addListener方法在概念上有什么区别?

【问题讨论】:

    标签: java eclipse swt jface


    【解决方案1】:

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

    在正常情况下,addFilteraddListener 都会收到相同事件的通知,但 addFilter 会更早被调用。

    它们的不同之处在于添加addFilter的监听器可以取消将事件分派给添加addListener的监听器,它通过将event.type设置为SWT.None来实现:

    来自addFilterjavadocs

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多