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

Agents de placement/Fenêtres Java Discussion :

Création dynamique de cases à cocher.


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut Création dynamique de cases à cocher.
    Bonjour,

    Sans doute cette question peut sembler étrange, mais si elle trouve une solution, cela me permettra d'alléger mon code de façon sensible.

    J'ai défini un panneau JPanel. En fonction d'une liste d'articles qu'un utilisateur peut commander, je souhaite créer dans ce JPanel autant de cases à cocher qu'il y a d'articles (avec un maxi bien sûr). Pour cela j'avais pensé créer une méthode de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private boolean CreerCheckBox(String nom, String texte, int x, int y)
    {
        javax.swing.JCheckBox   ?   = new javax.swing.JCheckBox();
        ?.setName(nom);
        ?.setText(texte);
        ?.setBounds(x, 22, y, 22);
        ?.addActionListener......
        panel.add(?);
    }
    Évidemment, je me heurte au problème du nom de la checkbox (représenté ici par ?) . Y-a-t-il un moyen de créer dynamiquement son nom ?

    Bien sûr je pourrais définir de façon statique n cases à cocher que je pourrais afficher ("setVisible(true)") selon qu'elles seraient active ou non, mais si je pouvais éviter j'aimerais beaucoup.

    Merci de vos conseils avisés.
    gégé

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pourquoi as-tu besoin de paramétrer son nom ??? Il s'agit d'une variable locale à la méthode. Tu peux donc utiliser n'importe quel nom...


    a++

  3. #3
    Membre expérimenté Avatar de akrom
    Homme Profil pro
    Automaticien
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Par défaut
    Regarde du coté des ArrayList ici

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Regarde du coté des ArrayList ici
    +1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private boolean CreerCheckBox(String nom, String texte, int x, int y)
    {
        javax.swing.JCheckBox   onSentBalance   = new javax.swing.JCheckBox();
        onSentBalance.setName(nom);//<--- inutile
        onSentBalance.setText(texte);
        onSentBalance.setBounds(x, 22, y, 22);
        onSentBalance.addActionListener......
        maList.add(onSentBalance);//<--- Ligne en plus : maList = ArrayList
        panel.add(onSentBalance);
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,
    Pourquoi as-tu besoin de paramétrer son nom ??? Il s'agit d'une variable locale à la méthode. Tu peux donc utiliser n'importe quel nom...
    a++
    D'abord merci

    Oui j'ai essayé, mais cela ne marche pas. Seule la première case est ajoutée Sans doute une erreur de programmation. Voici mon code.
    Merci pour les suggestions.
    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
     
     
    import javax.swing.JPanel;
     
    public class Courses extends javax.swing.JFrame 
    {
       private static final long serialVersionUID = 1L;
       JPanel Panneau = null;
    public Courses() 
    {
       super();
       initialize();
    } 
    private void addCheckBox(String texte, int ligne, int colonne, javax.swing.JPanel pan)
    {
       javax.swing.JCheckBox x  = new javax.swing.JCheckBox();
       x.setName("Check"+ ligne + colonne);
       int posX = 18 + 40*ligne;
       int posY = 97 + 140*colonne;
       x.setText(texte);
       x.setBounds(posX, 22,posY, 22);
      pan.add(x);
    }
     
    private void initialize() 
    {
      setName("Courses");
    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
       setSize(800, 600);
        Panneau = new javax.swing.JPanel();
       Panneau.setName("Panneau");
       Panneau.setLayout(null);
       Panneau.setBounds(15, 69, 785, 423);
       addCheckBox("Hello AA", 1,1, Panneau );
       addCheckBox("Hello BB", 1,2,Panneau);
       addCheckBox("Hello CC", 2,1,Panneau);
       this.add(Panneau);
       setVisible(true);
    }
     
    public static void main(java.lang.String[] args) 
    {
    		  new Courses();
    }
    }
    Citation Envoyé par Akrom Voir le message
    Regarde du coté des ArrayList ici
    Oui je connais, mais je ne vois pas comment implémenter mes cases dynamiquement à des positions différentes.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Les JCheckBoxs sont bien ajoutées au panel. Le problème vient du fait que tu les ajoutes les unes sur les autres avec des tailles bien trop grande (tu peux vérifier cela avec un setOpaque(false))

    Le layout null c'est le mal !!!!

    Il serait préférable d'utiliser un layout adapté à ce que tu veux obtenir


    a++

    PS : Pour rendre le code plus lisible, essayes de bien respecter les conventions de nommages

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Les JCheckBoxs sont bien ajoutées au panel. Le problème vient du fait que tu les ajoutes les unes sur les autres avec des tailles bien trop grande (tu peux vérifier cela avec un setOpaque(false))

    Le layout null c'est le mal !!!!

    Il serait préférable d'utiliser un layout adapté à ce que tu veux obtenir


    a++

    PS : Pour rendre le code plus lisible, essayes de bien respecter les conventions de nommages

    Merci, j'ai trouvé mon erreur. J'avais inversé y et "width" dans setBound.
    Après avoir revu également l'algorithme de placement des cases, ça marche impec.

    A propos de Layout null, c'est une excellente remarque. En utilisant GridLayout, j'ai fait en une instruction ce que je voulais faire, et ça marche.

    Pour ce qui concerne les standards de nommage, je suis bien sûr entièrement d'accord. Mais le code précédent était juste un test écrit en quelques minutes (d'où mon erreur) Comme quoi il faut prendre son temps pour réfléchir. .

    Merci encore.

    Gégé

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut
    Citation Envoyé par Ivelios Voir le message
    +1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private boolean CreerCheckBox(String nom, String texte, int x, int y)
    {
        javax.swing.JCheckBox   onSentBalance   = new javax.swing.JCheckBox();
        onSentBalance.setName(nom);//<--- inutile
        onSentBalance.setText(texte);
        onSentBalance.setBounds(x, 22, y, 22);
        onSentBalance.addActionListener......
        maList.add(onSentBalance);//<--- Ligne en plus : maList = ArrayList
        panel.add(onSentBalance);
    }
    Je ne vois pas ce que ArrayList ajoute au code. En particulier le lien entre le Panneau et cette table. Je dois sans doute être un peu bouché.
    Merci quand même pour la réponse.

  9. #9
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Pour ton cas, tu n'as en effet pas besoin de liste pour stocker tes CheckBox. J'aurais du regarder à deux fois
    Par contre ça peut être pratique pour faire beaucoup d'ajout et beaucoup de suppression de CheckBox ( dynamique ) et ce sur plusieurs panel.
    Il est alors préférable de tous les stocker dans une même liste.

    Après, j'ai pris l'habitude (bonne ou mauvaise) de souvent utiliser les ArrayList pour stocker mes éléments de fenêtre. Voila pour les petits éclaircissement des idées qui traine dans mon cerveau

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut
    Citation Envoyé par Ivelios Voir le message
    Pour ton cas, tu n'as en effet pas besoin de liste pour stocker tes CheckBox. J'aurais du regarder à deux fois
    Par contre ça peut être pratique pour faire beaucoup d'ajout et beaucoup de suppression de CheckBox ( dynamique ) et ce sur plusieurs panel.
    Il est alors préférable de tous les stocker dans une même liste.

    Après, j'ai pris l'habitude (bonne ou mauvaise) de souvent utiliser les ArrayList pour stocker mes éléments de fenêtre. Voila pour les petits éclaircissement des idées qui traine dans mon cerveau
    Merci, c'était déjà super sympa de me répondre.

    Gégé

Discussions similaires

  1. [VBA]Création d'un champ table case à cocher en Vba
    Par PASCAL_CD dans le forum VBA Access
    Réponses: 6
    Dernier message: 04/04/2007, 10h09
  2. [HTML PHP] case à cocher dynamique
    Par baboun007 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2006, 23h14
  3. [VBA-Excel] Macro Création Case à cocher
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 21/07/2006, 10h18
  4. Réponses: 2
    Dernier message: 04/06/2006, 21h35
  5. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07

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