Bonjour à tous , voici ma problématique .
J'ai une classe principale qui contient 4 panels . Les 4 panels sont codés dans 4 classes externes.
Panel 1 contient un menu qui permet de changer dynamiquement le Panel 2.
Panel1 est une liste dans un Scroll Panel.
Quand on clique sur une ligne différente dans Panel2 , le Panel2 affiche d'autres données.
Je n'arrive pas trop à communiquer entre les 2 .
J'ai placé un listener dans Panel1 que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private class lstRowListener implements ListSelectionListener { public void valueChanged(ListSelectionEvent evt) { if (evt.getValueIsAdjusting()) return; int idx = jlist.getSelectedIndex(); log.debug("Selected Date "+ idx ); ContextSingleton.getInstance().getParent().load(new Integer(idx).toString()); }
Pour communiquer entre les 2, j'ai fait un Singleton qui set au lancement du programme Panel2 dedans.
Et donc Panel2 dont voici le code :
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 public class ContextSingleton { private MainPanel mainPanel = null; /** Creates a new instance of ContextSingleton */ private static ContextSingleton instance = null; public static ContextSingleton getInstance() { if(instance == null) { instance = new ContextSingleton(); } return instance; } public void setParent(MainPanel main) { mainPanel = main; } public MainPanel getParent() { return mainPanel; } }
Le code compile mais à l'execution j'ai
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 /** * * @author Administrateur */ public class MainPanel extends javax.swing.JPanel { /** Creates new form MainPanel */ public MainPanel() { initComponents(); load("Titre1"); } public void load(String title){ BarChart bc = new jfreecharts.BarChart(title); ChartPanel chartPanel = new ChartPanel(bc.getChart()); this.add(chartPanel, 0 ); } @SuppressWarnings("unchecked") private void initComponents() { }
Or quand je place statique la fonction je ne peux pas, le this ne supporte pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Exception in thread "AWT-EventQueue-0" java.lang.IncompatibleClassChangeError: Expected static method panels.MainPanel.load(Ljava/lang/String;)V
Peut être je m'y prend mal et c'est pas comme ça que je dois faire?
Je pense que le souci est juste d'ajouter/editer un Panel de façon dynamique.merci de votre aide.








Répondre avec citation




Partager