开发者

Refresh JList in a JFrame

开发者 https://www.devze.com 2023-01-27 04:25 出处:网络
I\'ve got a JList which displays information from a vector. The user can then add and remove information from this vector. Is it possible to refresh the JList inside my JFrame when items are added / r

I've got a JList which displays information from a vector. The user can then add and remove information from this vector. Is it possible to refresh the JList inside my JFrame when items are added / removed from the Vector? Currently I'm doing..

 list = new JList(names);
 jframe.add(new JScrollPane(list), BorderLayout.CENTER);

but this doesn't refresh t开发者_C百科he JList to anything new. I've check and my vector contents etc. do change but the list isn't refreshing. Why? how can I fix it?


You should not be updating the Vector. Changes should be made directly to the ListModel then the table will repaint itself automatically.

If you decide to recreate the ListModel because of the changes to the Vector, then you update the list by doing:

list.setModel( theNewModel );

Edit: Forget the Vector and load the data directly into the DefaultListModel:

DefaultListModel model = new DefaultListModel();
model.addElement( "one" );
model.addElement( "two" );
JList list = new JList( model );

Now whenever you need to change the data you update the model directly using the addElement(), removeElement() or set() methods. The list will automatically be repainted.


Call updateUI on the Jlist after modifying your Vector.


I think I found the solution for the Jlist's graphic 'refresh'. Try calling this method after each add or remove element of the model that is held by the Jlist.

Jlist_name.ensureIndexIsVisible(model_name.getSize());


you can use list.setListData(vector) each time the vector changes

0

精彩评论

暂无评论...
验证码 换一张
取 消