
您可以考虑3种方法:
1)在添加引用之前,请先保存对监听器的引用,以便以后删除它:
MouseListener ml = new MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { chatInputMouseClicked(evt); }};chatInput.addMouseListener (ml);...chatInput.removeMouseListener (ml);2)您可以使用相应的方法获取所有某些事件侦听器,例如:
public MouseListener[] getMouseListeners()
要么
public EventListener[] getListeners(Class listenerType)
这是第一种和第二种方法的javadocs
。如果您可以在所有侦听器中确定要删除的侦听器,或者如果要删除所有侦听器,则此方法可能会有所帮助。
3)您可以使用一些布尔变量来“关闭”您的监听器。但是您应该注意,变量应该是外部类的字段:
private boolean mouseListenerIsActive;public void doSmthWithMouseListeners () { mouseListenerIsActive = true; chatInput.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (mouseListenerIsActive) { chatInputMouseClicked(evt); } } });}public void stopMouseListner () { mouseListenerIsActive = false;}我希望使用第三个对象,因为它具有一定的灵活性,如果我想再次打开鼠标侦听器,则无需创建新对象。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)