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 :
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 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)
Merci à la bonne âme qui viendra à mon secours.
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); }
@++
Partager