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

Interfaces Graphiques en Java Discussion :

declarer plusieurs JcheckBox dans une boucle


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 77
    Points : 67
    Points
    67
    Par défaut declarer plusieurs JcheckBox dans une boucle
    salut,
    on fait je suis entraint d'aboutir la classe Jtree avec JAVA,,sauf j'ai besion de declarer plusieurs JCheckBox dans une boucle::
    Au lieu par exple de declarer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     //
    JCheckBox j1 = new JCheckBox ();
    JCheckBox j2 = new JCheckBox ();
    JCheckBox j3 = new JCheckBox ();
    je dois ecrire par exple;
    
    for(int i=1;i<4;i++)
      JCheckBox j i = new JCheckBox ();
    merci ,,

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La façon de procéder est de créer une Liste de JCheckBox et de la remplir au fur et à mesure de ta boucle.

    Java n'est pas un langage de script , et ne permet pas de créer des noms de variable à la volée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<JCheckBox> l = new ArrayList<JCheckBox>();
    for(int i=1;i<4;i++) {
      JCheckBox checkBox = new JCheckBox ();
      l.add(checkBox);
    }
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 77
    Points : 67
    Points
    67
    Par défaut
    merci de m'avoir rependu,,, j'en savais bien que' est ce t'es ecrit ... mais le probleme de mon application necessite de declarer plusieurs JCheckbox
    afin d'affecter chaque checkbox à un ActionListner pour que je click sur le pere, alors les fils seront automatiquement "checked"
    stp, executer le code et tu va compredre

    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    import java.util.*;
     
    //public class TreeAvecCB {
     
    //}
     
    class FenetreTree extends JFrame{
        final JCheckBox rootCheck = new JCheckBox("BSC_NAME") ;
        DefaultMutableTreeNode noeudParent = new DefaultMutableTreeNode(rootCheck);
        DefaultMutableTreeNode noeudEnfant=null;//=new DefaultMutableTreeNode(new JCheckBox("Relais_gammart"));;
        DefaultMutableTreeNode noeudEnfant1=null;
        JPanel p2=new JPanel();
        public JButton but;
        public JTree arbo;
        public JCheckBox jcb1 = new JCheckBox();
        public JCheckBox jcb2 = new JCheckBox();
        FenetreTree(){
            super("Exemple pour homerosaur");
            setSize(800, 600);
     
     
            //DefaultMutableTreeNode noeudParent;
            but=new JButton("recuperer IsChecked ");
            DefaultTreeCellRenderer dtcr = new DefaultTreeCellRenderer();
            RenduComposant rc = new RenduComposant();
            EditComposant ec = new EditComposant();
     
            String[] tableau = {"Relais_gammart", "relais_tunis", "ennasr", "bizerte", "annahli"};
            p2.setLayout(new GridLayout());
            //JScrollPane jsp = new JScrollPane();
            //new JCheckBox("BSC_NAME").setToolTipText("ggg");
            //noeudParent = new DefaultMutableTreeNode(new JCheckBox("BSC_NAME"));
     
            rootCheck.addActionListener( new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    boolean sel = rootCheck.isSelected() ;
                    for( int i=0 ; i<noeudParent.getChildCount() ; i++ ) {
                        DefaultMutableTreeNode child = (DefaultMutableTreeNode) noeudParent.getChildAt( i ) ;
                        JCheckBox c = (JCheckBox) child.getUserObject() ;
                        c.setSelected( sel ) ;
                    }
                    arbo.updateUI() ;
                }
            } ) ;
     
            //for(int i = 0; i < tableau.length; i++){
            jcb1 = new JCheckBox(tableau[0]);
            //jcb.setToolTipText("");
            noeudEnfant = new DefaultMutableTreeNode(jcb1, true);
            jcb1.addActionListener( new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    boolean sel = jcb1.isSelected() ;
                    for( int i=0 ; i<noeudEnfant.getChildCount() ; i++ ) {
                        DefaultMutableTreeNode child = (DefaultMutableTreeNode) noeudEnfant.getChildAt( i ) ;
                        JCheckBox c = (JCheckBox) child.getUserObject() ;
                        c.setSelected( sel ) ;
                    }
                    arbo.updateUI() ;
                }
            } ) ;
     
           noeudParent.add(noeudEnfant);
            DefaultMutableTreeNode x = new DefaultMutableTreeNode(new JCheckBox("child of child"), true);
            noeudEnfant.add(x);
            DefaultMutableTreeNode y = new DefaultMutableTreeNode(new JCheckBox("child of child"), true);
            noeudEnfant.add(y);
     
     
     
            jcb2 = new JCheckBox(tableau[1]);
            noeudEnfant1 = new DefaultMutableTreeNode(jcb2, true);
            jcb2.addActionListener( new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    boolean sel = jcb2.isSelected() ;
                    for( int i=0 ; i<noeudEnfant1.getChildCount() ; i++ ) {
     
                        DefaultMutableTreeNode child = (DefaultMutableTreeNode) noeudEnfant1.getChildAt( i ) ;
                        JCheckBox c = (JCheckBox) child.getUserObject() ;
                        c.setSelected( sel ) ;
                    }
                    arbo.updateUI() ;
                }
            } ) ;
            DefaultMutableTreeNode cc = new DefaultMutableTreeNode(new JCheckBox("child of child"), true);
            noeudEnfant1.add(cc);
            DefaultMutableTreeNode f = new DefaultMutableTreeNode(new JCheckBox("child of child"), true);
            noeudEnfant1.add(f);
     
     
            noeudParent.add(noeudEnfant);
            noeudParent.add(noeudEnfant1);
     
            arbo = new JTree(noeudParent);
            arbo.setCellRenderer(rc);
            arbo.setCellEditor(ec);
            arbo.setBackground(new Color(238,238,238));
            arbo.setEditable(true);
            //getContentPane().add(arbo);
            p2.add(but);
            MonEcouteur_treeVB e= new MonEcouteur_treeVB(this);
            but.addActionListener(e);
            JScrollPane scroll = new JScrollPane(arbo);
            scroll.setPreferredSize(new Dimension(500,440));
            scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
     
            // on ajoute notre jscrollpane
            getContentPane().add(scroll,"North");
            getContentPane().add(p2,"South");
     
     
        }
     
        public static void main(String[] arg){
            JFrame arboCheck = new FenetreTree();
            arboCheck.setVisible(true);
        }
    }
    class RenduComposant implements TreeCellRenderer{
     
        public Component getTreeCellRendererComponent(JTree tree, Object obj,
                boolean selected, boolean expanded, boolean leaf,
                int row, boolean hasFocus){
     
            DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode)obj;
     
            JCheckBox toto = (JCheckBox)dmtcr.getUserObject();
            return toto;
        }
    }
    class EditComposant implements TreeCellEditor{
        public void addCellEditorListener(CellEditorListener l){ }
        public void cancelCellEditing() { }
        public Object getCellEditorValue(){
            return this;
        }
        public boolean isCellEditable(EventObject evt){
            if(evt instanceof MouseEvent){
                MouseEvent mevt = (MouseEvent) evt;
                if (mevt.getClickCount() == 1){
                    return true;
                }
            }
            return false;
        }
        public void removeCellEditorListener(CellEditorListener l){}
        public boolean shouldSelectCell(EventObject anEvent){
            return true;
        }
        public boolean stopCellEditing(){
            return false;
        }
        public Component getTreeCellEditorComponent(JTree tree, Object obj, boolean isSelected, boolean expanded, boolean leaf, int row){
            DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)obj;
            JCheckBox tata=(JCheckBox)dmtn.getUserObject();
            tata.setEnabled(true);
            return tata;
        }
    }

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par 01211983 Voir le message
    merci de m'avoir rependu,,, j'en savais bien que' est ce t'es ecrit ... mais le probleme de mon application necessite de declarer plusieurs JCheckbox
    afin d'affecter chaque checkbox à un ActionListner pour que je click sur le pere, alors les fils seront automatiquement "checked"
    stp, executer le code et tu va compredre
    Si ton français était un poil plus correct je comprendrais, mais pour l'instant je ne pige pas grand chose (et çà ne me donne pas vraiment envie de fouiller)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Et nous on a pas que ca a faire de prendre du code et de l'adapter a nos systemes et de le compiler pour le faire tourner. Donc :

    - tu ecris clairement et lisiblement ton probleme et ce qui t'arrives, ce que tu cherches a obtenir. Cela permet a tout le monde de comprendre ton probleme et d'essayer de t'aider, cela est donc un avantage pour toi.

    - dans le cas d'interfaces graphiques, tu peux poster des captures d'ecran ou des dessins representant des prototypes de ce que tu cherches a obtenir. Cela te permet de faire plus facilement comprendre comment tu envisages une interface complexe ce qui peut etre parfois difficile a expliquer avec un long paragraphe de texte, cela est donc egalement un avantage pour toi.

    Ensuite, tu peux simuler le fait de donner un nom de variable propre a chaque JCheckBox en :

    - utilisant une Map<String, JCheckBox> pour les stocker. La cle de la Map etant bien sur un nom de variable genere par ta boucle.

    - donnant un nom a ta JCheckBox via la propriete setName().

    - donnant un nom de commande a ta JCheckBox via la propriete setActionCommand().

    Chacune de ces solutions ou des combinaisons de plusieurs d'entre elles permet d'identifier l'une des cases a cocher de maniere unique.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Récupérer plusieurs champs dans une boucle
    Par poustiquette dans le forum Langage
    Réponses: 3
    Dernier message: 16/04/2010, 09h17
  2. [Débutant] declarer plusieurs variables dans une boucle possible?
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 35
    Dernier message: 23/02/2010, 18h08
  3. Récupérer les coordonnées de plusieurs DIV dans une boucle PHP
    Par renaud26 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/11/2009, 10h23
  4. [PHP 5.2] Implementer plusieurs fichiers dans une boucle
    Par Mugette dans le forum Langage
    Réponses: 5
    Dernier message: 17/08/2009, 18h44
  5. declarer plusieur elements dans une variable ?
    Par freebug dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 28/06/2005, 13h46

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