【问题标题】:Howto remove Listeners on SWING JComponents如何删除 SWING 组件上的侦听器
【发布时间】:2011-09-05 15:34:21
【问题描述】:

有没有一种简单的方法可以从 JComponent 中删除所有监听器?

JComponent widget = getComponentOverScaryMethod();
EventListener[] listners = widget.getListeners(EventListener.class);
for (EventListener l : listners) {
    widget.remove*RandomListener*(l);
}

背景:

我有一个带有未知数量的侦听器(随机类型)的 JComponent。由于小部件应该从可见部分中删除(并且不再需要),因此应该将其销毁(并且应该删除侦听器)。

提前致谢 琼

【问题讨论】:

  • 组件不会被再次使用?

标签: java swing listener


【解决方案1】:

【讨论】:

    【解决方案2】:

    如果您从父级中删除小部件,则不应再为事件触发它,并且侦听器应由 gc 自动释放

    侦听器不会被释放的唯一原因是泄漏,即使在不应该的情况下也可以使小部件保持可访问性

    【讨论】:

      【解决方案3】:

      我自己也遇到了类似的问题,并试图找到有关这个看似棘手的问题的更多有用文档。在此页面上,有人提到覆盖子类以实现侦听器删除的可能性。 http://www.jguru.com/faq/view.jsp?EID=72457

      引用: “从 JDK1.02 开始......如果有人谈论组件的实例,则始终可以将组件子类化并在分别调用超级方法后覆盖和跟踪它们。

      然后您可以随时自行删除它们。”

      包含代码示例,虽然看起来很难破解,祝你好运!

      【讨论】:

        猜你喜欢
        • 2020-09-04
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 2012-09-10
        • 2022-08-03
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多