0

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?

Thanks

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 by SeanC: n/a

3
Contributors
7
Replies
8
Views
5 Years
Discussion Span
Last Post by Ezzaral
0

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 by Ezzaral: n/a

0

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

0

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.

0

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

0

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

0

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

0

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.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.