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

 Java Discussion :

Réussir à cocher des JcheckBox suite à un événement


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 42
    Par défaut Réussir à cocher des JcheckBox suite à un événement
    Bonjour,
    Je souhaite cocher toute une liste de noms située à gauche de mon interface lorsque l'utilisateur coche la JCheckBox, nommée "CKBX_20_ClasseEntiere" qui lui propose cette option.
    Ma liste de JCheckBox est un tableau de JCheckBox, nommé "tab_CHK_Eleves". Elle est ajoutée dans un Panel nommé PAN_ListeElevesDevoir.
    Au départ on voit que j'ai écrit quelques lignes pour la trier alphabétiquement.

    Lorsque l'utilisateur valide la bonne division via "BTN_CreerDevoir_InformationsValider" la liste de JCheckbox s'affiche correctement.
    Cependant lorsque, via "CKBX_20_ClasseEntiere", je souhaite cocher tous ces JCheckBox cela m'est impossible.
    J'ai ajouté une ligne " System.out.println(c.getText());" pour vérifier que cette liste était bien connue, accessible depuis ma boucle: pas de problème, la liste de noms s'affiche.
    Je me demande donc d'où vient mon problème. Qu'est ce qui m'échappe?
    Merci par avance.

    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
     
    public void actionPerformed(ActionEvent e){
     
                    String nomClasse = CBX_11_Classes_CreerDevoir_Informations.getSelectedItem().toString();
                    JCheckBox[] tab_CHK_Eleves;
                    Classe classe = L_Classes.obtenirListeClasses().get(nomClasse);
                    tab_CHK_Eleves = new JCheckBox[classe.quelleListe().size()];
                    Collection<Eleve> c_Eleves = classe.quelleListe().values();
                    int i=0; 
                    ArrayList<String> liste = new ArrayList<>();
                    for(Eleve eleve : c_Eleves)
                    {
                       liste.add(eleve.nom+"  "+eleve.prenom);
                    }
                    Collections.sort(liste);
                    for (int j=0;j<liste.size();j++)
                    {
                       tab_CHK_Eleves[i] = new JCheckBox(liste.get(j));
                       tab_CHK_Eleves[i].setBackground(new Color(200, 173, 127));
                       i++;
                    }
                    ////////////////////////////////////////////////////////
                    if(e.getSource() == BTN_CreerDevoir_InformationsValider)
                    {
                        if(TXT_21_CreerDevoir_Informations.getText().equals(""))
                        {
                            JOptionPane jop = new JOptionPane();
                            jop.showMessageDialog(this, "Vous n'avez pas précisél'intitulé du devoir.");
                         }
                        else
                        {
                           PAN_CreerDevoir_Informations.setEnabled(false);
                           LBL_10_Informations.setEnabled(false);
                           CBX_11_Classes_CreerDevoir_Informations.setEnabled(false);
                           LBL_20_Informations.setEnabled(false);
                           TXT_21_CreerDevoir_Informations.setEnabled(false);
                           BTN_CreerDevoir_InformationsValider.setEnabled(false);
                           PAN_CreerDevoir_Informations.setBorder(BorderFactory.createTitledBorder(line1, "Informations générales"));
     
                           PAN_CreerDevoir_ListeEleves.setBorder(BorderFactory.createTitledBorder(line2, "Liste des élèves"));
                           PAN_CreerDevoir_ListeEleves.setEnabled(true);
                           LBL_10_PAN_CreerDevoir_ListeEleves_Gauche.setEnabled(true);
                           CKBX_20_ClasseEntiere.setEnabled(true);
                           BTN_CreerDevoir_ListeElevesValider.setEnabled(true);
     
                           ///Création de la liste des élèves de la classe 
                           PAN_ListeElevesDevoir.setLayout(new BoxLayout(PAN_ListeElevesDevoir, BoxLayout.Y_AXIS));
                           for(JCheckBox c: tab_CHK_Eleves)
                           {
                                PAN_ListeElevesDevoir.add(c);
                           }
                           PAN_ListeElevesDevoir.setBackground(new Color(200, 173, 127));
                           PAN_Arbre.setVisible(false);
                           btn_A.setVisible(false);
                           btn_B.setVisible(false);
                           PAN_Listes.add(PAN_ListeElevesDevoir,"ListeElevesDevoir");
                           pile_Listes.show(PAN_Listes, "ListeElevesDevoir");
                         }
                    }
                    ////////////////////////////////////////////////////////
                    if(e.getSource() == CKBX_20_ClasseEntiere){
                       for(JCheckBox c: tab_CHK_Eleves)
                       {
                          c.setSelected(true);
                          System.out.println(c.getText());
                       }
                    }
                    ////////////////////////////////////////////////////////
                    if(e.getSource() == BTN_CreerDevoir_ListeElevesValider)
                    {
     
                    }
     
     
            }

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    En fait, tu créées deux tableaux de nouvelles JCheckBox complètement différentes dans les 2 traitements d'action (pour BTN_CreerDevoir_InformationsValider et CKBX_20_ClasseEntiere).

    Je ne sais pas ce que fait (vu que je n'en connais pas les classes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PAN_Listes.add(PAN_ListeElevesDevoir,"ListeElevesDevoir");
    pile_Listes.show(PAN_Listes, "ListeElevesDevoir");
    mais je suppose que le résultat en est que tu ne vois que le premier ensemble de JCheckBox. En conséquence, lorsque tu sélectionnes les JCheckBox du second ensemble, tu ne vois pas les premières sélectionnées.

    Il faut que tu créées les JCheckBox dans un cas (action sur BTN_CreerDevoir_InformationsValider) et que tu traites exactement les mêmes lors de l'action sur CKBX_20_ClasseEntiere, en stockant le tableau tab_CHK_Eleves par exemple en variable de classe. Mais attention : à chaque action sur BTN_CreerDevoir_InformationsValider, tu vas créer un nouveau tableau avec de nouvelles checkbox. Il faut donc également gérer ça, en veillant à conserver, entre chaque action qui concerne le même groupe d'élèves à réutiliser, les checkbox précédemment créées, et à n'en créer de nouvelles que lorsque le groupe d'élèves change. C'est faisable, en ayant une variable qui mémorise quel groupe d'élèves a été sélectionné la dernière fois qu'on a créé les checkboxes, et en veillant à bien supprimer et à retirer de son conteneur les checkboxes précédentes à chaque fois qu'on en créée de nouvelles (quand le groupe d'élève à changer), à moins que tu utilises un CardLayout pour afficher ces panels. Pour simplifier ce traitement, tu aurais intérêt à utiliser une JTable pour simplifier ces manipulations. D'autre part, tu aurais intérêt à découper ton code en méthodes dédiées, afin d'éviter d'avoir une méthode à rallonge, difficilement lisible.
    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 averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 42
    Par défaut
    Merci pour ta réponse.
    En effet c'était cela. Au début je n'ai pas compris quand ut me disais que je créais deux fois le tableau mais quand j'ai ouvert le programme c'était évident.
    Je n'y avais pas pensé!
    Je note tes autres conseils (JTable notamment).
    Merci beaucoup d'avoir pris un peu de ton temps pour m'aider.
    Bonne journée

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

Discussions similaires

  1. [JTree avec des JCheckBox]Récupérer les "renderer".
    Par M4v3rick dans le forum Composants
    Réponses: 2
    Dernier message: 16/05/2006, 12h46
  2. interaction sur des combo suite à un evenement
    Par stela86 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/05/2006, 17h17
  3. [JTable]Comment ajouter des JCheckBox
    Par @yoyo dans le forum Composants
    Réponses: 7
    Dernier message: 24/03/2006, 14h27
  4. Réponses: 5
    Dernier message: 28/02/2006, 09h44
  5. Cocher des cases d'une liste de cases à cocher
    Par isachat666 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/12/2005, 13h17

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