[JList] Affichage et exception
Bonjour,
j'ai une interface graphique qui possède une JList dans un Jscrollpane.
Cette JList à un defaultListModel.
A certains moments, j'update la liste des éléments.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
private final Map<String, Integer> myMap; // TreeMap
public void updateMyList() {
myModelList.clear();
for (String str : myMap.keySet()) {
myModelList.addElement( str);
}
this.validate(); //le this est un panel
}
.... init(){
...
myModelList= new DefaultListModel();
for (String str : myMap.keySet()) {
myModelList.addElement(str);
}
myJList= new JList(myModelList);
JScrollPane scrollPane = new JScrollPane(myJList);
...
} |
Mais depuis ce matin, j'ai des soucis d'affichage : des fois (2 fois sur 5) la liste apparait vide. J'ai bien vérifié que je passait toujours dans la fonction, que ma map n'étaient pas vide, que le model n'était pas vide après ajout etc.
En plus de ce problème, des fois (1 fois sur 3) une exception java apparait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source) |
Je commence à caler pour résoudre ce problème.
J'ai essayé en enlevant tout les this.validate, this.repaint etc.. mais rien n'y fait.
Ci quelqu'un peut m'aider à résoudre ça, je lui en serait reconnaissante.
Shaina