Hi all, I'm currently trying to solve a problem with a JList. I've got an actionPerformed event applied to the JList (also tried the item updated event but it has the same effect), and whenever this event is fired, (i.e. the user makes a selection), something happens. Now, the problem is that when the list is being populated, it seems to fire the event too - thus creating problems for me.

Is there a way to stop the JList from firing the actionPerformed or itemStateChanged event when the contents is updated?


P.S. Question has also been asked here: http://www.java-forums.org/awt-swing/41914-how-stop-jlist-firing-events-when-contents-updated.html#post195009

Edited 5 Years Ago by SeanC: n/a

Either populate the list before you add the listener or set a boolean flag initialized and check if (initialized) {... in your listener.

Edit: You may check to see if ListSelectionListener works better for your needs also. I wouldn't think that one would fire any event as the model is filled.

Edited 5 Years Ago by Ezzaral: n/a

Thanks for your reply! Could you kindly reply on the initialize part, haven't understood completely?

You can set a flag while you are altering the contents of the control, such as initialized=false; and then set it to true when you are finished. Your listener can simply ignore events while you are updating the contents by checking that flag.

Oh I see what you mean, thanks :) I'll try it out!

but as Darryl said (Java Forum) remove and add just if needed, if you'll able to set boolean flag (Ezzeral sugestion), then you'll be able same way remove&add whole Listener, that's good concept and the safiest

I see - thanks for your input. I'll try both techniques and see which one provides the best results. Thanks!

Are you actually using the AWT List component? JList doesn't provide methods to add ActionListener or ItemListener.

JList just uses the ListSelectionListener which behaves a bit differently.

This question has already been answered. Start a new discussion instead.