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 :

jcheckbox et jtable [Débutant(e)]


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 130
    Par défaut jcheckbox et jtable
    Bonjour,

    Je récupère le nom et prenom des emloyés à partir d'une BD et j'affiche la liste dans une jTable à laquelle j'ajoute à la fin un jCheckBox.

    Ensuite j'ai dans ms forme un bouton pour supprimer de la BD les employés qui seront choisis dans la jTable.

    La question est comment récupérer les lignes (employés) dont la jCheckBox est cochée.

    voici mon code :

    1-J'affiche le résultat du select à l'affichage de ma forme.

    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
     
     
    ..
    ..
    String[] colNames={"Nom","Prenom","Selection"};
    ..
    ..
    private void formComponentShown(java.awt.event.ComponentEvent evt) {
            // TODO add your handling code here:
     
            try
            {
             listeemploye=new ArrayList();
            Class.forName("org.postgresql.Driver");
            Connection conX = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mabase","postgres","postgres");
            PreparedStatement ps=conX.prepareStatement("Select nom,prenom from employes order by nom");
            ResultSet rs=ps.executeQuery();
            while(rs.next())
           {
     
           Employe employe=new Employe(rs.getString(1),rs.getString(2));
            listeemploye.add(employe);
           }
            conX.close();
     
             Iterator iterateur = listeemploye.iterator();
                Object[][] data = new Object[listeemploye.size()][3];
                int i = 0;
     
                while(iterateur.hasNext()){
                    Employe e= (Employe)iterateur.next();
                    data[i][0] = e.nom;
                    data[i][1] = e.prenom
                    data[i][2] = e.isSelected();
                   i++;
                }
     
                jTable1.setModel(new DefaultTableModel(
                data, colNames
                )
                        {
        Class[] types = new Class [] {
            java.lang.Object.class, java.lang.Object.class, java.lang.Boolean.class
        };
     
                    @Override
        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
    }
                        );
     
     
         }
          catch(SQLException sle)
           {
            //traitement
           }
     
            catch(ClassNotFoundException cnfe)
           {
            //traitement  
           }
     
     
     
     
        }
    2-Par ailleur j'ai la classe employé avec un constructeur nom et prenom et un booleen selected pour les checkbox.

    3-Maintenant je voudrais recuperer les ligne selectionnées pour les supprimer de la base dans un evenement d'un bouton "Suppression".

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Si tu utilise une JTable, ne t'embête à ajouter une checkBox pour la selection...

    Par défaut, tu peux selectionner plusieurs lignes dans une JTable en maintenant la touche "ctrl" enfoncé. De plus, tu peux ensuite récuperer les numéros des lignes selectionnées via "taJTable.getSelectedRows();"

    ensuite, libre à toi de faire ce que tu souhaite avec ces données...

    Dans ton cas,

    1 - l'utilisateur selectionne les lignes qu'il veux de ta JTable via la touche "ctrl"
    2 - il appuie sur supprimer
    3 - dans le listener de ton bouton supprimer, tu appèle une méthode qui va faire le get SelectedRows sur ta JTable, etva ensuite demandé à ta BDD de supprimer ces lignes.
    4 - Tu mets à jour lemodèl de ta JTable et tu appèle fireDataChanged();
    5 - Ca devrait être bon.

  3. #3
    Membre actif
    Homme Profil pro
    M2 Sécurité des systèmes d'information et cryptologie
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : M2 Sécurité des systèmes d'information et cryptologie

    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Par défaut
    Dis donc t'es optimiste

    Citation Envoyé par michon
    l'utilisateur selectionne les lignes qu'il veux de ta JTable via la touche "ctrl"
    Je donne pas 2 jours à cette fonctionnalité avant que les utilisateurs appellent les informaticiens pour les engueuler d'une telle complexité . Tout le monde ne sait pas que "ctrl" sert à faire de la multi-sélection

    Citation Envoyé par kam81
    Je récupère le nom et prenom des emloyés à partir d'une BD et j'affiche la liste dans une jTable à laquelle j'ajoute à la fin un jCheckBox.
    Cette idée est, pour moi celle à retenir. Dans ce cas, je crois que la méthode isSelected() correspondra à tes besoins.

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par Le_novice_de_l'info Voir le message
    Dis donc t'es optimiste



    Je donne pas 2 jours à cette fonctionnalité avant que les utilisateurs appellent les informaticiens pour les engueuler d'une telle complexité . Tout le monde ne sait pas que "ctrl" sert à faire de la multi-sélection
    Enfin dans le cas présent il y a bien plus grave qu'un problème de multi sélection: la gestion de l'EDT (aka thread graphique est juste ignorée, les tâches longues devant être exécutées dans des Threads externes).

    Donc direction çà: http://gfx.developpez.com/tutoriel/j...ing-threading/

    Et ça: http://rom.developpez.com/java-swingworker/



    Quant au problème de de récupération des lignes qui t'intéressent dans la JTable, il vient fondalement dut fait que tu n'as pas créé de modèle s'appuyant sur ta liste d'objets Employé. Tu trouveras un exemple de ce genre d'implémentation de modèle dans le tutoriel suivant: http://baptiste-wicht.developpez.com...ing/jtable/#L4

Discussions similaires

  1. Comment avoir une colonne de JCheckbox en JTable
    Par wafa22 dans le forum Composants
    Réponses: 0
    Dernier message: 11/03/2014, 13h15
  2. [Swing] JCheckBox dans JTable, clic difficile
    Par Kihmé Xs dans le forum Composants
    Réponses: 2
    Dernier message: 27/07/2011, 16h12
  3. [Swing] JCheckbox dans JTable qui change de position
    Par isoman dans le forum Composants
    Réponses: 1
    Dernier message: 27/07/2011, 15h11
  4. pb avec un JcheckBox dans un Jtable
    Par hutchuck dans le forum Composants
    Réponses: 4
    Dernier message: 04/11/2005, 09h51
  5. [JTable] insérer un JCheckBox
    Par amelhog dans le forum Composants
    Réponses: 3
    Dernier message: 31/05/2005, 10h32

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