[JComboBox] raffraichir : removeAllItems(), updateUI();
Bonjour,
J'ai un souci pour rafraichir une comboBox.
Voici comment cela fonctionne. Dans un ComboBox 1, j'ai une liste de clients. Et j'aimerais que lorsque l'on choisi un client, dans le CbBox 2, il y soit affiché les comptes du client.
Les clients sont stockés dans une ArrayList qui est transmise au premier CboBox.
Pour remplir la 2ieme Liste, c'est un peu plus compliqué : je récupere l'id du Combobox Client et via cet id je recupere le nom du client dans l'array list Client. Ensuite, je fais une boucle qui transmet a un vecteur les comptes du client que j'affiche ensuite dans ma seconde liste. Via des System.println, on peux voir que cela fonctionne bien. Mon seul souci est de mettre à jour la 2ieme CBox.
Voici des bouts de codes :
Via ce code, je recupere l'id de l'AList Client pour ensuite aller cherche ses comptes via son nom
Code:
1 2 3 4 5 6 7
|
jCBnomclient.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
/* ici sera gérer le remplissage de la liste des comptes clients suivant le choix du client */
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
JComboBox jCBnomclient = (JComboBox)e.getSource();
int idclientliste = jCBnomclient.getSelectedIndex(); |
Via cette boucle, je copie les comptes du client dans un vecteur dans le but de l'afficher dans la liste 2
Code:
1 2 3 4 5
|
for (int i = 0; i < nomclientliste.sesComptes.size(); i++){
vectcombo.addElement(nomclientliste.sesComptes.get(i));
} |
Enfin, je transmet le vecteur au ComboBox :
Code:
1 2 3 4 5 6 7 8 9 10
|
public JComboBox getJCBsescomptes() {
if (jCBsescomptes == null) {
jCBsescomptes = new JComboBox(vectcombo);
jCBsescomptes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
} |
J'ai essayer de mettre un remvoveAllItems() juste apres le "if (jCBsescomptes == null) {" mais sa n'a pas fonctionner : java.lang.NullPointerException
Idem pour le udpdate.UI();
Selon moi, je pense qu'il faut mettre à jour la liste 2 avant de transmettre le vecteur non? J'ai l'impression de ne pas le placer ou il faut.
Par contre, comme j'ai pas utilisé le addItem mais j'ai crée un JComboBox qui charge le vecteur dedans, c'est peut etre pour cela que la technique du allRemoveItem(); ne passe pas ? :roll:
Je ne dois pas etre très loin de la solution!!!
Merci à celui qui pourra m'orienter vers la lumière :P
la victoire contre la machine!
bon bah finalement non, je ne vais pas tous recommencer...
car j'ai réussi à avancer!!
Enfaite, normal que cela ne se rafraichissais pas! car la boucle pour afficher les comptes n'était pas dans le actionperfomed de la liste 1!
Voici le code fonctionnel (si sa peux aider) :
Code:
1 2 3 4 5 6 7
|
/* vider le cbbox Compte */
listecompte.removeAllElements();
/* remplir le cbbox Compte */
for (int i = 0; i < nomclientliste.sesComptes.size(); i++){
listecompte.addElement(nomclientliste.sesComptes.get(i));
} |
:king:
Merci pour votre aide!
Une nouvelle question va arriver très prochainement!
:salut: