IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Problème de rafraîchissement d'une JComboBox


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Problème de rafraîchissement d'une JComboBox
    Bonjour/Bonsoir,

    j'ai actuellement un petit souci avec une JComboBox qui ne se rafraîchit pas après ma modification des données qu'elle reçoit.

    J'utilise donc SWING et MVC pour afficher mes composants (donc une frame comme vue principale et le principe des CardLayout pour afficher les panels correspondants grâce à un système de menu)

    Les données proviennent d'une base de données. Jusque là pas de problème, j'arrive à ajouter des données, à en supprimer mais malheureusement les données dans la jcombobox ne se mettent jamais à jour.

    Voici le code du panel avec la jcombobox en question :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    package Vue.produit;
    import Controleur.produit.ProduitAjoutCon;
    import Modele.Categorie;
    import java.awt.*;
    import java.util.ArrayList;
    import javax.swing.*;
     
    public class ProduitAjoutPanel extends JPanel{
        private JLabel nomLabel, catLabel;
        private JTextField nom;
        private JComboBox cat;
        private DefaultComboBoxModel modeleBox;
        private JButton ajouter;
        private ProduitAjoutCon con;
        private ArrayList<Categorie> listeCategorie;
        private GridBagConstraints gbc;
     
        public ProduitAjoutPanel(ProduitAjoutCon con) {
            this.con = con;
            con.setPanel(this);
            this.setLayout(new GridBagLayout());
            gbc = new GridBagConstraints();
     
            nomLabel = new JLabel("Nom du produit :");
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.gridwidth = 1;
            gbc.gridheight = 1;
            gbc.anchor = GridBagConstraints.BASELINE_LEADING;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            gbc.insets = new Insets(0, 0, 10, 10);
            this.add(nomLabel, gbc);
     
            nom = new JTextField(15);
            gbc.gridx = 1;
            gbc.gridy = 0;
            gbc.gridwidth = 1;
            gbc.gridheight = 1;
            gbc.anchor = GridBagConstraints.BASELINE_LEADING;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            this.add(nom, gbc);
     
            ajouter = new JButton("Ajouter");
            gbc.gridx = 1;
            gbc.gridy = 5;
            gbc.gridwidth = 1;
            gbc.gridheight = 1;
            gbc.anchor = GridBagConstraints.BASELINE_LEADING;
            gbc.fill = GridBagConstraints.HORIZONTAL;
            this.add(ajouter, gbc);
            ajouter.addActionListener(con);
        }
     
        public JTextField getNom() {
            return nom;
        }
     
        public void setNom(JTextField nom) {
            this.nom = nom;
        }
     
        public void reset() {
            this.nom.setText("");
        }
     
        public void setListe(ArrayList<Categorie> listeCategorie) {
            this.listeCategorie = listeCategorie;
        }
     
        public void afficheCombo(boolean b) {
            if(b) {
                catLabel = new JLabel("Catégorie :");
                gbc.gridx = 0;
                gbc.gridy = 1;
                gbc.gridwidth = 1;
                gbc.gridheight = 1;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.fill = GridBagConstraints.HORIZONTAL;
                gbc.insets = new Insets(0, 0, 10, 10);
                this.add(catLabel, gbc);
     
                modeleBox = new DefaultComboBoxModel(listeCategorie.toArray());
                cat = new JComboBox(modeleBox);
                gbc.gridx = 1;
                gbc.gridy = 1;
                gbc.gridwidth = 1;
                gbc.gridheight = 1;
                gbc.anchor = GridBagConstraints.BASELINE_LEADING;
                gbc.fill = GridBagConstraints.HORIZONTAL;
                this.add(cat, gbc);
            }
        }
    }
    Et l'écouteur de cette classe :


    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
    39
    40
    41
    42
    package Controleur.produit;
    import Controleur.Controleur;
    import Modele.*;
    import Vue.*;
    import Vue.produit.*;
    import java.awt.event.ActionEvent;
    import java.util.*;
     
    public class ProduitAjoutCon extends Controleur {
        private ProduitAjoutPanel pan;
        private ProduitDAO dao;
        private CategorieDAO catDAO;
     
        public ProduitAjoutCon(MainFrame vue,  ProduitDAO dao, CategorieDAO catDAO) {
            super(vue);
            this.dao = dao;
            this.catDAO = catDAO;
        }
     
        public void setPanel(ProduitAjoutPanel pan) {
            this.pan = pan;
        }
     
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand() == "Ajout") {
                try {
                    ArrayList<Categorie> liste = catDAO.readAll();
                    pan.setListe(liste);
                    System.out.println(liste);
                    if(!liste.isEmpty()) {
                        pan.afficheCombo(true);
                    } else {
                        pan.afficheCombo(false);
                    }
                } catch (Exception ex) {
                    System.out.println(ex);
                }
                vue.setPanel("produitajoutpanel");
            }
        }
    }
    Je n'arrive pas à comprendre le problème, j'ai essayé un removeAllItems() mais ça ne marche pas.

    Merci de votre aide éventuelle.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,
    Ta méthode setListe n'a aucun lien avec la combo, donc il n'y a aucun raison qu'elle change quoique ce soit dans la combo.

    Fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    public void setListe(ArrayList<Categorie> listeCategorie) {
            this.listeCategorie = listeCategorie; 
            modeleBox.removeAllElements();
            for(Categorie categorie : listeCategorie) {
    	    modeleBox.addElement(categorie);
            }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] Problème de rafraîchissement d'une page via $_SESSION
    Par Joffrey H dans le forum Langage
    Réponses: 1
    Dernier message: 08/02/2013, 06h47
  2. Problème de rafraîchissement d'une .jsp
    Par BB85_TIGRIS dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/12/2006, 16h40
  3. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 16h33
  4. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 13h46
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo