Listeners Still Respond After Being Removed



I have the following code (with line numbers for convenience):

//jList is a JList
1 jList.setFocusable(false);
2 jList.removeListSelectionListener(this);
3 jList.setListData(new String[0]); //Clear in case new data is empty
//Other code for setting data
11 jList.setSelectedIndex(refIndex);
12 jList.setFocusable(true);
13 jList.addListSelectionListener(this);
14 componentIndex = jList.getSelectedIndex();

I've removed the class itself as the ListSelectionListener at the start (at
line 2), then add it later (at line 13). While testing, I found my data
was being updated more frequently than appropriate and when it was updated,
it would loop through multiple times. I tracked it back, by throwing an
error and printing a stack trace, to both lines 3 and 11. Both of these
lines, at different times, are triggering the ListSelectionListener.

Both of the offending lines are after I've removed the Listener and before I
reattach it. Why are they triggering the Listener when it's not attached?

Hal
.



Relevant Pages

  • Re: Listeners Still Respond After Being Removed
    ... //Other code for setting data ... I've removed the class itself as the ListSelectionListener at the start (at ... Both of the offending lines are after I've removed the Listener and before I ... single instance of the matching listener, ...
    (comp.lang.java.gui)
  • Re: Listeners Still Respond After Being Removed
    ... is empty //Other code for setting data ... I've removed the class itself as the ListSelectionListener at the start ... Why are they triggering the Listener when it's not ... single instance of the matching listener, ...
    (comp.lang.java.gui)