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 :

Actualisation JTable avec BDD


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut [Résolu]Actualisation JTable avec BDD
    Bonjour,

    je sais que le sujet a été abordé plus d'une fois. Mais après avoir parcouru le forum, les tutos, et le site de sun. Je n'arrive toujours pas a faire marcher mon boutton qui devrait raffrachir la JTable.

    J'ai créer la classe Table qui extends AbstractTableModel et implémenté le getValueAt et setValueAt comme expliqué sur le site de sun.

    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.table.AbstractTableModel;
     
    public class Table extends AbstractTableModel{
     
       Object donnees[][];
     
       String titres[];
     
       public Table(Object donnees[][], String titres[]) {
          this.donnees = donnees;
          this.titres = titres;
       }
     
       public int getColumnCount() {
           return donnees[0].length;
       }
     
       public Object getValueAt(int parm1, int parm2) {
           return donnees[parm1][parm2];
       }
     
       public int getRowCount() {
           return donnees.length;
       }
       public String getColumnName(int col){
         return titres[col];
       }
     
       public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
     
        public void setValueAt(Object value, int row, int col) {
            donnees[row][col] = value;
            fireTableDataChanged();
        }
     
     
        public void setDonnees(Object[][] donnees) {
            this.donnees = donnees;
            super.fireTableDataChanged();
        }
     
    }
    Dans ma fenêtre j'initialise ma JTable, je fais un setModel(Table())

    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
     
    Tableau = new javax.swing.JTable();
        private String[] s = new String [] {"Nom", "Prenom", "Rue", "Ville", "Département", "Tel", "mail" };
        private Object[][] rowNull = new Object[][]{{null, null, null, null, null, null, null}};
        private Table model = new Table(rowNull, s);
    .
    .
    .
    .
            Tableau.setModel(model = new Table(rep.remplirTab(), s));
            jScrollPane1.setViewportView(Tableau);
    .
    .
    .
    .    
    //Boutton raffraichir
    private void refreshButtonActionPerformed (java.awt.event.ActionEvent evt) {
            int x = 0;
            rep.selectAll();
            Object[][] liste = rep.remplirTab();
     
            while(x<=Tableau.getColumnCount()){
                Tableau.setValueAt(liste[x][0], x, 0);
                Tableau.setValueAt(liste[x][1], x, 1);
                Tableau.setValueAt(liste[x][2], x, 2);
                Tableau.setValueAt(liste[x][3], x, 3);
                Tableau.setValueAt(liste[x][4], x, 4);
                Tableau.setValueAt(liste[x][5], x, 5);
                Tableau.setValueAt(liste[x][6], x, 6);
                x++;
            } 
    }
    rep.selectAll() remplie une List par rapport au résultat d'un requete "SELECT * FROM personnes"
    public Object[][] remplirTab() rempli le tableau qui permet de construire la JTable.

    Voila voila, merci d'avance

    Edit:
    Bonjour,
    Je n'ai toujours pas résolu mon problème
    Si quelqu'un passe par la et peux m'aider.
    J'ai testé ca

    J'ai créé une fonction refresh dans ma classe Repertoire

    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
     public void refresh(DefaultTableModel tableModel){
            Vector column = new Vector();
            column.addElement("Prénom");
            column.addElement("Nom");
            column.addElement("tel");
            column.addElement("mail");
            personnes = null;
            personnes = DBServeur.getInstance().SelectAll();
            Vector rows = new Vector();
            for(Personne o:personnes){
               Vector row = new Vector();
               row.addElement(o.getPrenom());
               row.addElement(o.getNom());
               row.addElement(o.getTel());
               row.addElement(o.getMail());
               rows.addElement(row);
            }
     
            tableModel.setDataVector(rows, column);
        }
    La fonction SelectAll():

    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
    public List SelectAll(){
     
            try {
                stmt = conn.createStatement();
     
                if (stmt.execute("SELECT * FROM personnes")) {
                    rs = stmt.getResultSet();
                }
                while(rs.next()){
                    personne = new Personne(rs.getString(3), rs.getString(2), rs.getString(4), rs.getString(5), rs.getInt(6),rs.getString(7),rs.getString(8));
                    personnes.add(personne);
                }
                personne = null;
                rs.close();
                stmt.close();
     
                return personnes;
     
            }
    Quand j'appuie sur mon bouton Actualiser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DefaultTableModel tableModel = (DefaultTableModel)Tableau.getModel();
    rep.refresh(tableModel);
    Le test n'ai pas concluant, ca me rajoute le vecteur a ma JTable mais sans effacer ce qu'il y avait avant.

    Edit 2:

    J'ai réglé mon problème. Pour ceux que ça intéresse le problème venait de ma List que retournait mon DBServeur avec la méthode selectAll (qui retourne une List d'objet obtenue avec un " SELECT * FROM ).
    J'avais définie la List comme ca -> private List<Personne> personnes;
    le problème était qu'a chaque exécution de la fonction selectAll, la List personnes ajoutait le résultat de la requête a ses ancien résultat :s
    La réponse était toute simple il suffisait d'initialiser la List dans ma fonction.

    A+

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Par défaut jtable
    bonjour
    j'ai fait le meme code, il me permet d'afficher le resultat de mes requetes
    mais j'ai un probleme sur l'affichage dans ma jtable(refreche) les donnée supprimer n'existe pas sur la table mais il apparait sur l'interface de ma jtable
    comment ta fait pr initialiser la table a chaque requete!!!!?
    merci

Discussions similaires

  1. Rafraichissement JTable avec donnée BDD
    Par Coco4486 dans le forum Composants
    Réponses: 2
    Dernier message: 30/07/2007, 16h32
  2. [SWING] remplir une jtable avec une matrice de double
    Par Psykorel dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2006, 14h14
  3. [Impression] JTable avec en-tête et pied de page
    Par CheryBen dans le forum Composants
    Réponses: 4
    Dernier message: 28/09/2005, 09h03
  4. Réponses: 4
    Dernier message: 09/02/2005, 10h44
  5. [Swing]remplissage d'un JTable avec les vecteur
    Par 3adoula dans le forum Composants
    Réponses: 7
    Dernier message: 15/06/2004, 16h09

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