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

AWT/Swing Java Discussion :

Effacer contenu JTable java


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Effacer contenu JTable java
    Bonjour, je développe une application java sur netbeans. J'utilise une table dans laquelle j'affiche les données provenant d'une bdd mysql.
    Maintenant, je veux vider le contenu de la table avant de charger les nouvelles données mais ça ne fonctionne pas.
    Ma table continu d'empiler les données pourtant j'ai essayé les méthodes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maTable.remove();
    maTable.removeAll();
    maTable.repaint();
    maTable.reValidate();
    maTable.updateUI();
    Besoin d'aide s'il vous plait!

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Avec un peu de code ça serait plus simple je pense

    Mais sinon je crois qu'il faut accéder au modèle de la table.

    Essaye quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DefaultTableModel model = (DefaultTableModel) maTable.getModel();
    model.setRowCount(0);
    Normalement si tu utilise le modèle par défaut ça va supprimer les lignes en trop (donc toutes dans notre cas) et prévenir l'affichage du changement qui va se mettre à jour, à vérifier tiens nous au courant

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour Jeje, merci pour ta réponse, j'ai essayé ta méthode mais ça me vide complètement l'affichage graphique de ma table et n'affiche rien.
    Je ne sais pas si j'l'ai bien implémenté ta méthode mais 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    DefaultTableModel model = (DefaultTableModel) table_avancement.getModel();
            model.setRowCount(0);
            table_avancement.setShowGrid(true);
     
            Connection cnx=null;
            ResultSet rs=null;
            Statement st=null;
            try{
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://localhost:3306/gestion_personnel";
                cnx=DriverManager.getConnection(url,"root","root");
                st= cnx.createStatement();
     
                String reqlecture="select * from avancement where pers_matricule='"+f_matricule.getText()+"' order by avan_id desc";
     
                rs= st.executeQuery(reqlecture);
     
                int i=0;
     
                while(rs.next())
                {
                    table_avancement.setValueAt(rs.getString("avan_id"), i, 0);
                    table_avancement.setValueAt(rs.getString("pers_matricule"), i, 1);
                    table_avancement.setValueAt(rs.getString("nouvelle_echelon"), i, 2);
                    table_avancement.setValueAt(rs.getString("date_prise_effet"), i, 3);  
                    i++;
                }
     
            } catch(ClassNotFoundException e){
                System.err.println(e.getMessage());
            } catch(SQLException x)
            {
                System.err.println(x.getMessage());
            } finally{
                if(st!= null){
                    try{
                        st.close();
                    } catch(SQLException e1){
                        e1.printStackTrace();
                    }
                    if(rs!= null){
                        try{
                            rs.close();
                        } catch(SQLException e1){
                            e1.printStackTrace();
                        }
     
                        if(cnx!=null){
                            try{
                                cnx.close();
                            } catch(SQLException e2){
                                e2.printStackTrace();
                            }
                        }
                    }
                }
            }
    Affichage avant
    Nom : avant.png
Affichages : 1147
Taille : 20,9 Ko

    affichage après
    Nom : après.png
Affichages : 1137
Taille : 17,6 Ko

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Voici un rapide exemple :
    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
     
    private DefaultTableModel model = new DefaultTableModel(data, columnNames);
        private JTable table = new JTable();
     
        private void loadTable() {
            loadData();
            table.setModel(model);
    		// Vous pouvez ensuite faire des modifications sur la
    		// table, exemple : dimension des colonnes...
     
        }
     
        private void loadData() {
    		// peut être fait ailleurs
            model.addColumn("col 1");
            model.addColumn("col 2");
            model.addColumn("...");
            model.setRowCount(0); // clear les lignes
            // Ajout des lignes
    		String[] donnees;
    		for(int i = 0; i < 15; i++){
    			donnees = { "row " + i " col1", "row " + i + " col2", "..." };
    			model.addRow(donnees);
    		}
        }
    Et un tutoriel : https://thierry-leriche-dessirier.de...-5-min/#LIII-A

    Bonne soirée

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci Millezime pour ta réponse mais jusque là le problème n'est pas résolu.
    le but est d'afficher les avancements d'un employé par un clic sur ce dernier. Jusque là ça fonctionne, sauf que si le 1er employé a 3 avancements et que le 2e n'en a qu'1, les 2autres avancements du 1er employé s'affichent en bas du tableau

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 80
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Ceci provient de ta requête non ? Il me semble que tu trie par l'id des avancements, le résultat est alors forcément logique et provient de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from avancement where pers_matricule='"+f_matricule.getText()+"' order by avan_id desc;
    Quelque chose du genre devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from avancement where pers_matricule='"+f_matricule.getText()+"' order by pers_matricule desc;
    Attention, je te conseille d'utiliser l'objet "PreparedStatement" au lieu d'un objet "Statement", c'est une bonne habitude à prendre.
    Un peu de cours : https://java.developpez.com/faq/jdbc...paredStatement

    Bon courage

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Au fait, l'instruction " order by avan_id desc " permet d'avoir un affichage par ordre décroissant de la liste des avancements d'une personne car " avan_id " est l'id de la table avancement et c'est autoincrement. si tu revois un peu le screenshot de ma table, la colonne " N° " , commence par " 2 " et la ligne suivante c'est " 1 "

  8. #8
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Bonjour leggar,

    Je crois tu devrais voir l'exemple de @Millezime.

    C'est le model que tu dois utiliser pour mettre à jour les éléments de ta table et non manipuler directement la table.

    C'est ce code qui cause problème. Il faut ajouter tes nouvelles lignes dans le model avec addRow()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(rs.next())
                {
                    table_avancement.setValueAt(rs.getString("avan_id"), i, 0);
                    table_avancement.setValueAt(rs.getString("pers_matricule"), i, 1);
                    table_avancement.setValueAt(rs.getString("nouvelle_echelon"), i, 2);
                    table_avancement.setValueAt(rs.getString("date_prise_effet"), i, 3);  
                    i++;
                }
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchad

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour lankoande
    Merci pour ton conseil. J'ai essayé la méthode que @Millezime m'a proposé mais celle ci ne rempli ma table que de façon statique. et pourtant en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(rs.next())
                {
                    table_avancement.setValueAt(rs.getString("avan_id"), i, 0);
                    table_avancement.setValueAt(rs.getString("pers_matricule"), i, 1);
                    table_avancement.setValueAt(rs.getString("nouvelle_echelon"), i, 2);
                    table_avancement.setValueAt(rs.getString("date_prise_effet"), i, 3);  
                    i++;
                }
    je reccupère le contenu de table "avancement" (qui se trouve dans ma base de données) de façon dynamique et j'assigne ses valeurs aux colonnes de ma table. Je ne sais pas si tu vois un peu de quoi je parle

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/08/2015, 14h13
  2. Récupérer contenu JTable
    Par adn013 dans le forum Composants
    Réponses: 2
    Dernier message: 24/05/2007, 11h15
  3. Effacer contenu JTextField lors d'un clic
    Par javamax dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2007, 17h04
  4. Effacer la console Java
    Par tsharlz dans le forum Langage
    Réponses: 5
    Dernier message: 02/06/2006, 17h42
  5. effacer contenu d'un tableau
    Par mrtatou dans le forum C
    Réponses: 8
    Dernier message: 06/02/2006, 13h35

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