Ik probeer een item in een JList (swing) te veranderen, dat doe ik als volgt:
De parameter "mt" is hier het object dat veranderd is. Het Model van een JList is MyListModel en bevat objecten van type myTemplate. Als ik het veranderde item gevonden heb roep ik ContentsChanged() aan van MyListModel, die dan een seintje stuurt naar de View van JList.
Hier is de code voor myListModel, erg simpel, is eigenlijk alleen bedoeld om de functie "fireContentsChanged" publiek te maken, want zonder deze functie is er geen mogelijkheid om een item in een JList te veranderen.
Maar opeen of ander manier werkt het niet.
resulteert in een update van de JList View, maar alle items worden geupdate en dat is niet de bedoeling. Het is de bedoeling dat alleen de myTemplate die verandert is (de eerste parameter van ContentsChanged) word geupdate.
Heeft iemand enig idee wat hier fout kan zitten?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
| public void templateUpdateEvent(myTemplate mt){ DefaultListModel dlm=(DefaultListModel)tbc.getData().getModel(); for(int i=0;i<dlm.size();i++){ myTemplate temp=(myTemplate)dlm.elementAt(i); if(temp.getId()==mt.getId()){ myListModel mlm=tbc.getData().getModel(); mlm.ContentsChanged(temp, i, i); break; } } } |
De parameter "mt" is hier het object dat veranderd is. Het Model van een JList is MyListModel en bevat objecten van type myTemplate. Als ik het veranderde item gevonden heb roep ik ContentsChanged() aan van MyListModel, die dan een seintje stuurt naar de View van JList.
Hier is de code voor myListModel, erg simpel, is eigenlijk alleen bedoeld om de functie "fireContentsChanged" publiek te maken, want zonder deze functie is er geen mogelijkheid om een item in een JList te veranderen.
Java:
1
2
3
4
5
6
7
8
9
| public class myListModel extends DefaultListModel { public myListModel() { super(); } public void ContentsChanged(Object source, int index0, int index1){ fireContentsChanged(source, index0, index1); } } |
Maar opeen of ander manier werkt het niet.
Java:
1
| mlm.ContentsChanged(temp, i, i); |
resulteert in een update van de JList View, maar alle items worden geupdate en dat is niet de bedoeling. Het is de bedoeling dat alleen de myTemplate die verandert is (de eerste parameter van ContentsChanged) word geupdate.
Heeft iemand enig idee wat hier fout kan zitten?