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 :

[JTable] créer un dataModel pour charger la table


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Par défaut [JTable] créer un dataModel pour charger la table
    Bonjour,

    J'utilise un JTable dans une interface graphique. Cette JTable est alimentée par une base de données MYSQL qui retourne un objet Object[][] mesValeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Object[][] resultatsSelect;
    JTable table = new JTable(resultatsSelect, lesNomsCol);

    Seulement, je souhaite modifier ma table quand je fais une nouvelle requête (via interface graphique).
    Cette requête me retourne un nouvel objet. Mon problème est que je n'arrive pas à mettre ma table à jour avec cet objet ?

    J'ai trouvé 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
    JTable tab = new JTable();
    ...
    TableModel dataModel;
    dataModel = new AbstractTableModel() {
    			public int getColumnCount() {
    				return 4;
    			}
    			public int getRowCount() {
    				return 10;
    			}
    			public Object getValueAt(int row, int col) {
    				return new Integer(row*col);
    			}
    	    };
    ...
    tab.setModel(dataModel);
    seulement je n'arrrive pas à créer ce dataModel , je ne comprend pas

    Merci d'avance de m'aider
    Cordialement.

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Une solution est de ne pas passer par une classe anonyme afin de pouvoir lui ajouter une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class MyTableModel extends AbstractTableModel {
     
    	...
     
    	public void setData(Object[][] data) {
    		this.data = data;
    		fireTableDataChanged();
    	}
     
    	...
    }

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Par défaut
    Merci ngpub, j'essaye ca

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Par défaut
    J'ai créé la classe comme tu me l'as indiqué mais lorsque j'utilise setData(mesResultatsDuSelect) depuis ma classe d'interface graphique, rien ne se passe. je procède comme cela :

    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
    import javax.swing.*;
    import java.awt.event.*;
     
    public class interface extends JFrame implements ActionListener {
    ...
    Jtable laTable = new Jtable();
    ...
    recupererResDeSelect() {
    <recupération des données>
     
    MyTableModel TM = new MyTableModel();
    TM.setData(resultatsSelect);
    }
     
    }
    rien ne se passe, la table n'est pas affichée avec les valeurs...

  5. #5
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pardon je me suis trompé d'événement, cela devrait mieux marcher avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fireTableStructureChanged()

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Par défaut
    Désolé mais cela ne fonctionne toujours pas. Je n'ai pas d'affichage de ma table. (l'exécution se passe bien pourtant )

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2009, 14h49
  2. Réponses: 3
    Dernier message: 16/04/2009, 12h00
  3. Créer un bouton pour gérer la source des tables liées
    Par Fredo67 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/02/2008, 10h31
  4. Créer une partition pour une table
    Par Erakis dans le forum SQL Procédural
    Réponses: 22
    Dernier message: 28/02/2005, 18h39

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