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

Composants Java Discussion :

Récupérer les valeurs de mes checkbox créées dynamiquement


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 79
    Points : 45
    Points
    45
    Par défaut Récupérer les valeurs de mes checkbox créées dynamiquement
    Bonjour.

    j'ai un petit problème concernant la gestion dynamique des checkbox, je m'explique ; sans un Jpanel netbeans j'ai créer dynamiquement des checkbox (résultat d'une requête sql) , je n'arrive pas à récupérer la valeur de chaque checkbox.

    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
    public class Chambre extends javax.swing.JInternalFrame {
        JCheckBox a;
        public Chambre() {
            initComponents();
            this.ref(); // affichage des equipements 
        }
    //remplissage du jpanel
         public void ref (){ 
           try {
                /*connexion avec la base ....*/
               String query = "select * from Equipement ";
               st = (Statement) conn.createStatement();
               ResultSet rs = st.executeQuery(query);
    
               int m=0;
               
               while(rs.next()){
              m++;//ligne 
          
            a = new JCheckBox();
            jPanel1.setLayout(new GridLayout(m, 1));
            a.setText(rs.getString("Equipement"));
           
            jPanel1.add(a);
            
                }
    
                  st.close();
                  conn.close();
                }
            catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            }
    
    
         }
    
    //btn de test 
    
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
            int nbr = jPanel1.getComponentCount();
            
          for(int i=0; i<nbr; i++) {
    
            System.out.println(jPanel1.getComponent(i));
            
         }  
    }
    voici le resultat du system.out.println:

    javax.swing.JCheckBox[,2,2,96x18,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@1fd5e2,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=salle de bain ]
    javax.swing.JCheckBox[,2,20,96x18,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@12f9ee,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Téléviseur ]
    javax.swing.JCheckBox[,2,38,96x18,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.synth.SynthBorder@1d6a56e,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Téléphone]



    un coup de main

    merci d'avance

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Plusieurs remarques en vrac concernant ce code :
    - JCheckBox a; devrait etre une variable locale puisque utilisée seulement dans la boucle de création. Ca change rien mais c'est plus propre
    - jPanel1 semble etre une variable de classe. Dans ce cas, faire jPanel1.setLayout(new GridLayout(m, 1)); dans la boucle gaspille de la mémoire pour rien. J'imagine que jPanel1 est le panel ou tu veux mettre les checkbox. Il suffit donc de faire 1 seule fois : jPanel1.setLayout(new GridLayout(0, 1)); pour que les checkbox soient ajoutées les unes apres les autres.
    - Pour récupérer les checkbox, tu peux, comme tu l'as fait, parcourir les composants du panel et recuperer tes checkbox. Mais tu vas devoir les caster en checkbox donc pour faire propre, il faudrait verifier que c'est bien des checkbox (pour le cas ou tu ajouterais autre chose par la suite) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
            int nbr = jPanel1.getComponentCount();
     
          for(int i=0; i<nbr; i++) {
            Component c = jPanel1.getComponent(i);
            if(c instanceof JCheckBox) {
              JCheckBox cb = (JCheckBox)c;
              System.out.println(cb.isSelected());
            }
     
         }  
    }
    - Meme si tu peux utiliser le JPanel pour retrouver les checkbox, à ta place, j'utiliserais plutot une liste ou je mettrais les checkbox. Ca t'eviterait les cast et c'est plus propre.
    - Tes enregistrements venant d'une base de données, j'imagine que tu veux pouvoir récupérer les valeurs pour les modifier. A ta place, je créerais une classe héritant de JCheckBox et qui possede un attribut id initialisé avec les données venant de la BDD afin de mettre à jour le champ correspondant.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 79
    Points : 45
    Points
    45
    Par défaut
    merci hwoarang ça marche bien

    cordialement

Discussions similaires

  1. récupérer les valeurs d'un checkbox dans une liste
    Par ikouhan dans le forum Struts 1
    Réponses: 19
    Dernier message: 31/08/2010, 14h22
  2. [MySQL] récupérer valeurs de mes checkbox créé dynamiquement
    Par bullrot dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/06/2010, 10h33
  3. Réponses: 3
    Dernier message: 26/11/2009, 13h34
  4. Réponses: 5
    Dernier message: 18/02/2008, 16h11
  5. Réponses: 2
    Dernier message: 24/08/2007, 14h25

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