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 :

Associer une JTable à une Collection


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Par défaut Associer une JTable à une Collection
    Bonjour à tous, je suis en train de me prendre un peu la tête, j'ai une base MySQL et je rempli une collection de Client grâce à cette base. Seulement j'aimerais remplir ma JTable avec ma collection que j'ai préalablement incrémentée.

    Je crée ma fenêtre comme ceci avec ma JTable, et dans mon main j'incrémente ma collection. Le problème est dans mon ModeleStatiqueObjet() je n'arrive pas a utilisé ma collection pour incrémenter ma JTable.

    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
     
    import java.awt.*;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
     
    public class Fenetre extends JFrame {
     
        JTable tableau = new JTable(new ModeleStatiqueObjet());
        JScrollPane Jscroll = new JScrollPane(tableau);
     
        public Fenetre() {
            this.setTitle("Masse Mailer");
            this.setSize(1000, 500);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
     
            this.add(Jscroll, BorderLayout.CENTER);
        }
     
    	public static void main(String[] args) {
    		Fenetre maFenetre = new Fenetre();
    		Annuaire monAnnuaire = new Annuaire();
    		ConnectSql maConnectSql = new ConnectSql();
     
    		//Incrémentation JTable
    		maConnectSql.start("jdbc:mysql://localhost:3306/mailer", "root", "");
    		monAnnuaire.remplir_collection(maConnectSql.remplir(), maConnectSql.cpt_ligne());
    		maConnectSql.stop();
     
    	}
    }
    et ModeleStatiqueObjet() :

    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
     
    import javax.swing.table.AbstractTableModel;
     
    public class ModeleStatiqueObjet extends AbstractTableModel {
    	private Client[] MesClients;
    	private  String[] entetes = {"ID", "Nom", "Prénom", "Société", "E-mail"};
     
    	public ModeleStatiqueObjet() {
    		super();
     
    		MesClients = new Client[] {
    		};
    	}
     
    	public int getRowCount() {
    		return MesClients.length;
    	}
     
    	public int getColumnCount() {
    		return entetes.length;
    	}
     
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
    	public Object getValueAt(int rowIndex, int columnIndex) {
            switch(columnIndex){
            case 0:
                return MesClients[rowIndex].getId_client();
            case 1:
                return MesClients[rowIndex].getNom();
            case 2:
                return MesClients[rowIndex].getPrenom();
            case 3:
                return MesClients[rowIndex].getSociete();
            case 4:
                return MesClients[rowIndex].getEmail();
            default:
                return null; //Ne devrait jamais arriver
            }
        }
    }
    Si quelqu'un pouvait me venir en aide je vous serais très reconnaissant.

    Merci d'avance

  2. #2
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    bah, on ne voit pas quand tu ajoutes tes clients à ta Jtable.

    On constate simplement que tu instancies une table vide avec des colonnes.

    J'imagine que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monAnnuaire.remplir_collection(maConnectSql.remplir(), maConnectSql.cpt_ligne());
    doit ajouter des clients

    il faut ensuite indiquer à table que son modèle à changer afin quelle soit rafraichie.

    voir du coté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau.fireTableDataChanged();

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Par défaut
    En fait je fais ceci :

    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
     
    import javax.swing.table.AbstractTableModel;
     
    public class ModeleStatiqueObjet extends AbstractTableModel {
    	private Client[] MesClients;
    	private  String[] entetes = {"ID", "Nom", "Prénom", "Société", "E-mail"};
     
    	public ModeleStatiqueObjet() {
    		super();
     
    		Annuaire monAnnuaire = new Annuaire();
    		ConnectSql maConnectSql = new ConnectSql();
     
    		maConnectSql.start("jdbc:mysql://localhost:3306/mailer", "root", "");
    		monAnnuaire.remplir_collection(maConnectSql.remplir(), maConnectSql.cpt_ligne());
    		maConnectSql.stop();
    	}
     
    	public int getRowCount() {
    		return MesClients.length;
    	}
     
    	public int getColumnCount() {
    		return entetes.length;
    	}
     
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
    	public Object getValueAt(int rowIndex, int columnIndex) {
            switch(columnIndex){
            case 0:
                return MesClients[rowIndex].getId_client();
            case 1:
                return MesClients[rowIndex].getNom();
            case 2:
                return MesClients[rowIndex].getPrenom();
            case 3:
                return MesClients[rowIndex].getSociete();
            case 4:
                return MesClients[rowIndex].getEmail();
            default:
                return null; //Ne devrait jamais arriver
            }
        }
    }
    effectivement ca ajoute bien mes clients mais ensuite je ne parvient pas a les ajouter à ma JTable en fait

  4. #4
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    Heu tu as changé ton code.

    je ne vois pas quand MesClients est incrémenté ?

  5. #5
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    monAnnuaire
    contient les clients

    et

    MesClients
    est vide, hors la JTable va Afficher MesClients

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Par défaut
    Voici mes classes, ca sera plus complet :

    Fenetre.java
    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
     
    import java.awt.*;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
     
    public class Fenetre extends JFrame {
     
        JTable tableau = new JTable(new ModeleStatiqueObjet());
        JScrollPane Jscroll = new JScrollPane(tableau);
     
        public Fenetre() {
            this.setTitle("Masse Mailer");
            this.setSize(1000, 500);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
     
            this.add(Jscroll, BorderLayout.CENTER);
        }
     
    	public static void main(String[] args) {
    		Fenetre maFenetre = new Fenetre();
    	}
    }
    Client.java
    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
     
     
    public class Client {
    	private int id_client;
    	private String nom;
    	private String prenom;
    	private String societe;
    	private String email;
     
    	Client(int Vid_client, String Vnom, String Vprenom, String Vsociete, String Vemail) {
    		id_client = Vid_client;
    		nom = Vnom;
    		prenom = Vprenom;
    		societe = Vsociete;
    		email = Vemail;
    	}
     
    	public void setId_client(int id_client) {
    		this.id_client = id_client;
    	}
     
    	public int getId_client() {
    		return id_client;
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
     
    	public String getPrenom() {
    		return prenom;
    	}
     
    	public void setSociete(String societe) {
    		this.societe = societe;
    	}
     
    	public String getSociete() {
    		return societe;
    	}
     
    	public void setEmail(String email) {
    		this.email = email;
    	}
     
    	public String getEmail() {
    		return email;
    	}
    }
    Annuaire.java
    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
     
     
    public class Annuaire {
    	Client[] MesClients;
     
    	Annuaire() {
    		MesClients = new Client[0];
    	}
     
    	public void ajouter(Client c) {
    		Client[] CopieDeMesClients = new Client[MesClients.length + 1];
    		for (int i = 0; i < MesClients.length ; i++)
    			CopieDeMesClients[i] = this.MesClients[i];
    		CopieDeMesClients[this.MesClients.length] = c;
    		this.MesClients = CopieDeMesClients;
    	}
     
    	public void remplir_collection(String[][] client, int ligne) {
    		for (int i = 0; i < ligne; i++) {
    			int id = Integer.parseInt(client[i][0]);
    			ajouter(new Client(id, client[i][1], client[i][2], client[i][3], client[i][4]));
    		}
    	}
     
    	public void afficher() {
    		for (int i = 0; i < MesClients.length; i++) {
    			System.out.println(MesClients[i].getId_client());
    			System.out.println(MesClients[i].getNom());
    			System.out.println(MesClients[i].getPrenom());
    			System.out.println(MesClients[i].getSociete());
    			System.out.println(MesClients[i].getEmail());
    		}
    	}
    }
    ConnnectSql.java
    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
    69
    70
    71
    72
    73
    74
    75
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
     
    public class ConnectSql {
    	private Connection conn;
    	private Statement stmt;
     
    	public void start(String Vurl, String Vusername, String Vmdp) {
    		try {
    			conn = DriverManager.getConnection(Vurl, Vusername, Vmdp);
    			stmt = conn.createStatement();
    		}
    		catch (Exception e) {
    			System.err.println("Erreur !");
    			System.err.println(e.getMessage());
    		}
    	}
     
    	public void stop() {
    		try {
    			conn.close();
    		}
    		catch (Exception e) {
    			System.err.println("Erreur !");
    			System.err.println(e.getMessage());
    		}
    	}
     
    	public int cpt_ligne() {
    		int ligne = 0;
    		try {
    			ResultSet rs;
    			rs = stmt.executeQuery("SELECT COUNT(*) AS cpt FROM client");
    			rs.next();
    			ligne = rs.getInt("cpt");
    		}
    		catch (Exception e) {
    			System.err.println("Erreur !");
    			System.err.println(e.getMessage());
    		}
    		return ligne;
    	}
     
    	public String[][] remplir() {
    		String[][] client = new String[cpt_ligne()][5];
    		int ligne = 0;
    		try {	
    			ResultSet rs;			
    			rs = stmt.executeQuery("SELECT id_client, nom, prenom, societe, email FROM client");
    			while (rs.next()) {
    				Integer MonID = rs.getInt("id_client");
    				String MonNom = rs.getString("nom");
    				String MonPrenom = rs.getString("prenom");
    				String MaSociete = rs.getString("societe");
    				String MonEmail = rs.getString("email");
     
    				client[ligne][0] = MonID.toString();
    				client[ligne][1] = MonNom;
    				client[ligne][2] = MonPrenom;
    				client[ligne][3] = MaSociete;
    				client[ligne][4] = MonEmail;
     
    				ligne++;
    			}
    		}
    		catch (Exception e) {
    			System.err.println("Erreur !");
    			System.err.println(e.getMessage());
    		}
    		return client;
    	}
    }
    ModeleStatiqueObjet.java
    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
     
    import javax.swing.table.AbstractTableModel;
     
    public class ModeleStatiqueObjet extends AbstractTableModel {
    	private Client[] MesClients;
    	private  String[] entetes = {"ID", "Nom", "Prénom", "Société", "E-mail"};
     
    	public ModeleStatiqueObjet() {
    		super();
     
    		Annuaire monAnnuaire = new Annuaire();
    		ConnectSql maConnectSql = new ConnectSql();
    		maConnectSql.start("jdbc:mysql://localhost:3306/mailer", "root", "");
    		monAnnuaire.remplir_collection(maConnectSql.remplir(), maConnectSql.cpt_ligne());
    		maConnectSql.stop();
     
    		MesClients = new Client[] {
     
    		};
    	}
     
    	public int getRowCount() {
    		return MesClients.length;
    	}
     
    	public int getColumnCount() {
    		return entetes.length;
    	}
     
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
    	public Object getValueAt(int rowIndex, int columnIndex) {
            switch(columnIndex){
            case 0:
                return MesClients[rowIndex].getId_client();
            case 1:
                return MesClients[rowIndex].getNom();
            case 2:
                return MesClients[rowIndex].getPrenom();
            case 3:
                return MesClients[rowIndex].getSociete();
            case 4:
                return MesClients[rowIndex].getEmail();
            default:
                return null; //Ne devrait jamais arriver
            }
        }
    }
    MesClients n'est pas vide car lorsque j'appelle ma fonction afficher() j'arrive a lire MesClients. J'ai l'impression que je suis pas loin du tout ...

    Sinon je me suis aidé ici, mais lui n'utilise pas de collection, c'est ca le problème : http://baptiste-wicht.developpez.com.../swing/jtable/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. [XL-2010] Copie d'un tableau d'une feuille à une autre : une cellule ne se recopie pas
    Par mchouv dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/07/2014, 12h47
  3. Passer variables d'une JTable à une autre sur un Joptionpane
    Par laplumedoie dans le forum Débuter
    Réponses: 4
    Dernier message: 28/02/2014, 18h58
  4. Réponses: 4
    Dernier message: 23/01/2013, 10h40
  5. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 13h22

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