如何删除SWING JComponents上的监听器

时间:2011-05-31 16:33:32

标签: java swing listener

有一种从JComponent中删除所有Listener的简单方法吗?

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

背景:

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

提前致谢 琼

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

如果从父项中删除小部件,则不应再次触发事件,并且应通过gc自动释放侦听器

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