JCombobox dependants des uns et des autres

Résolu/Fermé
faresalgerien Messages postés 3 Date d'inscription dimanche 8 janvier 2012 Statut Membre Dernière intervention 13 juin 2013 - Modifié par faresalgerien le 12/06/2013 à 10:49
faresalgerien Messages postés 3 Date d'inscription dimanche 8 janvier 2012 Statut Membre Dernière intervention 13 juin 2013 - 13 juin 2013 à 11:39
Bonjour Tout le monde,
j'ai développé un programme java qui contient trois (3) JComboBox , ils sont reliés entre eux.
C'est à dire en clair, en sélectionnant une valeur du premier JCombobox , le second affiche une liste de valeur dont les données sont liées au premier, et après avoir choisi également une valeur dans ce 2èm JCombobox, le troisième JCombobox aussi affiche une liste de valeurs dépendantes du 2èm JCombobox.
Je suis parvenu à relier les 2 premiers JCombobox, en créant une méthode JAVA qui permet de relier le 1èr au second, mais j'arrive pas à faire de même pour le 3èm en créant une seconde méthode qui permettrait de relier les valeurs du 3èm au second.
voilà mon code et merci de m'avoir aidé :)

La déclaration des variables

private JComboBox domaine, domaineSecondaire, spécialité;
private String [] dm = {"","Science","Littérature","Histoire","Informatique"} ;
private String [] dms1 = {"","Vitérinaire","Biologie","Médecine"};
private String [] dms2 = {"","Arabe","Français","Anglais"} ;
private String [] dms3 = {"","Islam","Guerre Mondiale","Guerre Algérienne"} ;
private String [] dms4 = {"","Programmation","Maintenance","Réseaux"};
private String [] s1 ={"","Chats","Chiens"} ;
private String [] s2 ={"","Être Humain","Corp","Quelque chose"} ;
private String [] s3 ={"","Dentiste","Médecin Généraliste","Pédiatre","Neurologue"} ;
private String [] s4 ={"","Taha Hussein"};
private String [] s5 ={"","Victor Hugo"};
private String [] s6 ={"","Chikspire"};
private String [] s7 ={"","Prophète MOHAMED"};
private String [] s8 ={"","Hitler"};
private String [] s9 ={"","La bataille d'Alger"};
private String [] s10 ={"","JAVA","C++","C#","PHP"} ;
private String [] s11 ={"","HardWare","SoftWare"};
private String [] s12 ={"","Installation réseaux"};

La méthode qui permet d'afficher le deuxième JComboBox selon le choix du premier

private void choix(){
String dom = (String) domaine.getSelectedItem() ;
domaineSecondaire.hide() ;
if (dom.equals("Science")) domaineSecondaire = new JComboBox(dms1);
else{
if(dom.equals("Littérature")) domaineSecondaire = new JComboBox(dms2);
else{
if(dom.equals("Histoire")) domaineSecondaire = new JComboBox(dms3);
else{
if(dom.equals("Informatique")) domaineSecondaire = new JComboBox(dms4);
}
}

}
ajouterComposant(cont, domaineSecondaire, 100, 165, 370, 30);
}

La méthode qui permet d'afficher le troisième selon le choix du deuxième

private void choixD(){
String domS = (String) domaineSecondaire.getSelectedItem() ;
String dom = (String) domaine.getSelectedItem() ;
spécialité.hide() ;
if (dom.equals("Science")){
if(domS.equals("Vitérinaire")) spécialité = new JComboBox(s1) ;
else{
if(domS.equals("Biologie")) spécialité = new JComboBox(s2) ;
else{
if(domS.equals("Médecine")) spécialité = new JComboBox(s3) ;
}
}
}
else{
if(dom.equals("Littérature")){
if(domS.equals("Arabe")) spécialité = new JComboBox(s4) ;
else{
if(domS.equals("Français")) spécialité = new JComboBox(s5) ;
else{
if(domS.equals("Anglais")) spécialité = new JComboBox(s6) ;
}
}
}
else{
if(dom.equals("Histoire")){
if(domS.equals("Islam")) spécialité = new JComboBox(s7) ;
else{
if(domS.equals("Guerre Mondiale")) spécialité = new JComboBox(s8) ;
else{
if(domS.equals("Guerre Algérienne")) spécialité = new JComboBox(s9) ;
}
}
}
else{
if(dom.equals("Informatique")){
if(domS.equals("Programmation")) spécialité = new JComboBox(s10) ;
else{
if(domS.equals("Maintenance")) spécialité = new JComboBox(s11) ;
else{
if(domS.equals("Réseaux")) spécialité = new JComboBox(s12) ;
}
}
}
}
}

}
ajouterComposant(cont, spécialité, 100, 270, 370, 30);
}


mon problème c'est que la condition if (e.getSource() == domaineSecondaire)
ne marche pas et j'ai pas trouvé ou est le problème

MERCI


1 réponse

faresalgerien Messages postés 3 Date d'inscription dimanche 8 janvier 2012 Statut Membre Dernière intervention 13 juin 2013
13 juin 2013 à 11:39
Enfin j'ai trouvé la solution, le problème vient du fais que dans choix() j'ai instancié un nouveau JComboBox , dans ce cas domaineSecondaire n'a plus son actionListener car ce n'est plus la même instance que celle crée dans instancierComposants. Il faut donc rajouter addActionListener chaque fois que je "re instancies" mon JComboBox.
0