changer le contenu d'un jpanel dynamiquement
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:
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.
Code:
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;
}
} |
Et donc Panel2 dont voici le code :
Code:
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() {
} |
Le code compile mais à l'execution j'ai
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IncompatibleClassChangeError: Expected static method panels.MainPanel.load(Ljava/lang/String;)V
Or quand je place statique la fonction je ne peux pas, le this ne supporte pas.
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.