Bonjour

Voici mon problème. Dans mon application, je charge des classes provenant de jars extérieures à mon application (en l'occurence, des plugins). En fonction de ce que je récupère, je met à jour un JMenu qui liste les plugins activables (ajout d'un JMenuItem par plugin). Dans mon plugin d'essai, celui-ci affiche une JInternalFrame dans l'application mère. Si je le fais une fois, ça marche, pas de problème. Mais si je reclique sur le JMenuItem relatif à ce plugin, j'ai alors l'exception suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
	at java.awt.Container.addImpl(Container.java:1034)
	at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:209)
	at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:470)
	at java.awt.Container.add(Container.java:352)
	at com.machin.gui.MainWindow$6.actionPerformed(MainWindow.java:167)
Voici la méthode qui est incriminée dans l'exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
private void Scan(){
		PluginsList list = new PluginsList();
 
		for(Object o : list.plugins){
			if(o instanceof Plugin){
				plugins1.add((Plugin) o);
				item = new JMenuItem(plugins1.get(plugins1.size()-1).prediction);
				predictions.add(item);
				item.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e){
 
					}
				});
			}
			else if(o instanceof InternalFrame){
				plugins2.add((InternalFrame) o);
				System.out.println(plugins2.size());
				item = new JMenuItem(plugins2.get(plugins2.size()-1).prediction);
				predictions.add(item);
				item.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e){
						plugins2.get(plugins2.size()-1).setSize(200, 200);
						plugins2.get(plugins2.size()-1).setVisible(true);
						//Ligne incriminée dans l'exception
BioXpress.mw.getJDesktopPane().add(plugins2.get(plugins2.size()-1));
					}
				});
			}
		}
 
 
		int cpt = predictions.getItemCount();
		if(cpt>0)
			this.predictions.setEnabled(true);
 
		list.setVisible(true);
	}
Merci à la bonne âme qui viendra à mon secours.

@++