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 :

affichage dynamique des checkbox dans Jtable avec les données de ma base


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut affichage dynamique des checkbox dans Jtable avec les données de ma base
    Bonjour les zeros.
    Dans le cadre de mieux apprendre,je suis sur un projet.
    Je compte afficher dynamiquement les données de ma base mysql dans une table jtable.Là n'est pas le problème en effet j'affiche dynamiquement sans problème les données de ma base dans ma table.

    J'ai pour cela 3 colonnes dont,la première sera la colonne des cases à cocher,les checkbox,la deuxième et troisième colonne afficheraient respectivement la désignation et le montant provenant de ma base d'une manière dynamique.
    Cependant mon problème est l'affichage de chaque ligne avec un checkbox en vue de les manipuler pour mes traitements.Par exemple,selectionner deux désignations et faire la somme de leur montant par exemple.

    J'utilise Netbeans pour mon developpement.
    Voici mon code
    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
    Vector<Vector<String>> abonnesVector=new Vector<Vector<String>>();
        Statement state = (Statement) Connexion.getInstance().createStatement();
       /* String query="SELECT a.matricule, a.nomabon, a.prenomabon, a.telephone, a.somme,SUM( montant ) FROM abonnes AS a, cotisation AS b";
             query +="WHERE a.matricule = b.matricule";
             query +="GROUP BY a.matricule";*/
    String query="SELECT Designation_actes,Montant FROM creation_actes";
    check1 = new JCheckBox();
        ResultSet result =state.executeQuery(query);
        while(result.next()){
     
     
            Vector<String> abonnes=new Vector<String>();
            abonnes.add(javax.swing.check1);
            abonnes.add(result.getString("Designation_actes"));
            abonnes.add(result.getString("Montant"));
            abonnesVector.add(abonnes);
     
        }
        if(state!=null);
        state.close();
        return abonnesVector;
    }
    public Test() throws SQLException {
            data=getAbonnes();
            header=new Vector<String>();
            header.add("Cocher");
            header.add("La Designation");
            header.add("Le Montant");
            initComponents();
     
        }

  2. #2
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Tu devrai essayer de faire des vector de JComponent, et au lieu de mettre directement des String, tu mets des Label de tes strings.
    Ainsi tu pourra ajouter dans tes Vector<JComponent> des checksbox et les label.
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Vector<JComponent> abonnes = null;
      while(result.next()){
            abonnes=new Vector<JComponent>();
            abonnes.add(new JCheckBox());
            abonnes.add(new JLabel(result.getString("Designation_actes")));
            abonnes.add(new JLabel(result.getString("Montant")));
            abonnesVector.add(abonnes);
    }
    De plus, ta declaration de la checkbox va poser probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    check1 = new JCheckBox();
    Tu va inserer dans tous tes abonnes la meme checkbox, ce qui va surement donner des resultats etranges, enfin c'est a tester qd meme. (j irai jusqu a dire que qd tu va cocher une check box toute vont se cocher mais j en suis pas certain a 100%).
    En gros mieux vaut une nouvelle JCheckBox a chaque abonnee

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Bonsoir Torg666 et merci d'avoir repondu à mon message.
    Je m'excuse de ce retard.
    Oui je comprends ce que vous voulez dire quand j'ai declaré le checkbox unique pour tout donnee.
    Il vaut mieux créer un checkbox pour chaque donnee.
    J'ai pris en note votre modification cependant il me agenere une erreur au niveau de la dernière ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    abonnesVector.add(abonnes);
    Il me dit que la fonction add(),ne prend que les vecteur<String> mais pas les vecteur<jcomponent>.
    Je ne sais pas comment je vais me prendre pour cela,je suis perdu.
    Si vous pouvez me venir en aide.
    Merci d'avance

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Bonjour.

    J'avais oublié de remplacer le vecteur string en component dans mon application.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(result.next()){
            Vector<JComponent> abonnes=new Vector<JComponent>();
            abonnes.add(new JCheckBox());
            abonnes.add(new JLabel(result.getString("Designation_actes")));
            abonnes.add(new JLabel(result.getString("Montant")));
            abonnesVector.add(abonnes);
     
    }
    Je viens de decouvrir cependant, à l'execution m'affichige dans la première colonne,il m'affiche
    javax.swing.Jchecbox[]
    dans la colonne designation_acte
    javax.swing.jlabel[]
    et dans la colonne de montant
    javax.swing.jlabel[]

    Au lieu de m'afficher le checbox dans la première colonne,les designation dans la deuxième colonne puis le montant dans la troisième colonne.

    Quelqu'un peut-il m'aider?
    Merci d'avance

  5. #5
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Plutôt qu'utiliser des Vector de Vector peut pratique, il serait plus efficace d'utiliser ton propre modèle de données...


    Plus d'info ici : Création de tableaux (JTable) avec Swing

    a++

  6. #6
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Il faut biensur que tu change ton abonneVector pour pouvoir recevoir des Vector<JComponent>.
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<Vector<JComponent>> abonneVector = new Vector<Vector<JComponent>>();
    Attention, la JTable risque de prendre le toString de JComponent pour l'affichage et donc d'afficher la reference de tes objets JCheckBox et JLabel.
    Si c'est le cas faut passer par un TableModel. (y a plein d exemple sur le forum)

    bonne chance

  7. #7
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par shallum Voir le message
    Bonjour.

    J'avais oublié de remplacer le vecteur string en component dans mon application.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(result.next()){
            Vector<JComponent> abonnes=new Vector<JComponent>();
            abonnes.add(new JCheckBox());
            abonnes.add(new JLabel(result.getString("Designation_actes")));
            abonnes.add(new JLabel(result.getString("Montant")));
            abonnesVector.add(abonnes);
     
    }
    Je viens de decouvrir cependant, à l'execution m'affichige dans la première colonne,il m'affiche
    javax.swing.Jchecbox[]
    dans la colonne designation_acte
    javax.swing.jlabel[]
    et dans la colonne de montant
    javax.swing.jlabel[]

    Au lieu de m'afficher le checbox dans la première colonne,les designation dans la deuxième colonne puis le montant dans la troisième colonne.

    Quelqu'un peut-il m'aider?
    Merci d'avance
    Comme l' a dit adiGuba, il faut passer pas un TableModel (j ai plus trop l'habitude, j ai pas ce problème avec GWT)

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Bonjour à tous et merci de repondre à mon message.
    Je vais prendre vos orientations en compte et je reviens très bientot pour vous donner la suite de mon évolution.

    Merci et à tous de suite

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Bjr les amis.
    J'ai suivi le tutoriel de Baptiste-Wicht sur les Jtables.
    J'ai remarqué qu'au debut,le Tostring s'est affiché à la place reservé aux couleurs puis il a après il a affiché les couleurs par la methode dont voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class ColorCellRenderer extends DefaultTableCellRenderer {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
            Color color = (Color) value;
     
            setText("");
            setBackground(color);
     
            return this;
        }
    }
    Je voudrais faire comme lui et afficher le contenu de mon checkbox mais je ne sais pas comment faire.
    Je developpe mon application avec Netbeans.
    Je ne sais pas si je suis une bonne vois.

  10. #10
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    C'est indiquer dans le tutoriel : il faut associer le renderer à ta JTable :


    Soit selon le type de la cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau.setDefaultRenderer(Color.class, new ColorCellRenderer());
    Dans ce cas il faut que la méthode getColumnClass() de ton TableModel retourne bien le type "Color" pour la colonne en question.

    Soit sur une colonne spécifique :
    tableau.getColumnModel().getColumn(1).setCellRenderer(new ColorCellRenderer());
    a++

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Merci pour l'intervention.
    Cependant,c'est pas les couleurs que je veux afficher dans ma colonne.
    Je voulais juste m'inspirer de l'exemple d'affichage de couleur dans le tutoriel.
    Mais moi,je voudrais plutot affichicher le checkbox et à la place du Tostring du debut.

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Points : 14
    Points
    14
    Par défaut Cocher/dechocher un checkbox
    Merci pour vos differents apports.
    J'ai pu afficher le checkbox dans la colonne de ma table.
    Cependant,je voudrais qu'on puisse cocher ou decocher les cases à cocher.
    Voici mon code
    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
    jTable1 = new javax.swing.JTable();
     
    jTable1.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null, new Boolean(false)},
            {null, null, null, new Boolean(false)},
            {null, null, null, new Boolean(false)},
            {null, null, null, new Boolean(false)}
        },
        new String [] {
            "Title 1", "Title 2", "Title 3", "cocher"
        }
    ));
    jScrollPane1.setViewportView(jTable1);
     jTable1.getColumnModel().getColumn(3).setCellRenderer(new CheckBoxRenderer());
    //mon renderer
    private static class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
     
                public CheckBoxRenderer() {
     
     
                }
                public Component getTableCellRendererComponent(JTable jTable1, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                    if (isSelected ) {
    	  setSelected(new Boolean(true));
     
          }
          else {
    	 setSelected(new Boolean(false));
     
          }
          setSelected(((Boolean)value).booleanValue());
          return this;
                }
        }
    Mais rien ne se passe.
    Quelqu'un pourrait m'aider,merci d'avance

Discussions similaires

  1. Colorer des résultats dans JTable avec des couleurs differentes
    Par stratocasters dans le forum Composants
    Réponses: 9
    Dernier message: 13/07/2012, 11h22
  2. Remplir une table avec les données d'une base
    Par doc dans le forum Général Java
    Réponses: 2
    Dernier message: 25/06/2012, 00h48
  3. [Artichow] Créer une courbe avec les données d'une base de données
    Par tonymx15 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 15/12/2010, 10h13
  4. [MySQL] Création d'un tableau avec les données d'une base de données
    Par opeo dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/04/2009, 20h29
  5. [MySQL] Afficher une page avec les données de la base de données... Assez compliqué
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 19/05/2006, 10h46

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