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 :

Problème de rafraîchissement d'un JTable


Sujet :

Composants Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème de rafraîchissement d'un JTable
    Bonjour tout le monde !

    Je viens vous demander votre aide au sujet d'un projet Java que j'ai à rendre ce week-end. Il s'agit d'une "simple" gestion d'école dans laquelle nous devons utiliser base de donnée, interface graphique et relations client/serveur.

    Mon problème concerne l'interface graphique et plus particulièrement le rafraîchissement d'un JTable après ajout de donnée dans ma BDD. Prenons l'exemple de l'ajout d'une majeure de cursus. J'ai un tableau JTable qui liste toutes mes majeures. Ma méthode d'ajout fonctionne très bien, lorsque je clique sur mon menu Ajouter, je peux saisir les informations dans une fenêtre JDialog personnalisée. Le problème survient lorsque je clique sur le bouton de confirmation, celle-ci se ferme, ajoute dans la BDD mais ne rafraîchit pas les données de mon tableau alors que j'ai bien développé une méthode qui est censé avertir de la mise à jour du tableau (et donc met à jour l'affichage). C'est un peu embêtant car si je veux voir les nouveaux éléments ajouter, il faut que je ferme le programme et que je le relance. Mon problème est valable pour la suppression de donnée également (logique).

    En console, j'obtiens une Exception " java.lang.NullPointerException ". J'ai tout de même regardé ce que j'envoyais dans la méthode qui déclenche l'exception et celui-ci n'est pas vide (j'arrive à afficher toutes les majeures).

    C'est pour moi incompréhensible car j'utilise exactement le même procédé pour mettre à jour l'affichage des étudiants en fonction de leur promotion (événement déclenché par une JComboBox), et cela fonctionne à merveille !

    Voici des morceaux de code qui pourront peut-être vous éclairer :

    Le listener de mon bouton d'ajout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    btnAddMajeure.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent arg0) {
            (new PersoDialog(fenetre, new AjouterMajeure(fenetre))).executer();
            model.setData(listeMajeures());
        }        
    });
    Ma méthode listeMajeures()

    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
    /**
     * Fonction chargeant la liste de toutes les majeures.
     * @return Tableau de données
     */
    private Object[][] listeMajeures() {
     
        // On définit le titre des colonnes
        String[] titres = {"Nom", "Nombre de cours", "Détails", "Supprimer"};
        titles = titres;
     
        // On charge les données de la BDD
        MajeureDAO majeureDao = new MajeureDAO(Connexion.getInstance());
        ArrayList<Majeure> liste = majeureDao.findAll();
     
        // On définit le tableau de retour
        Object[][] retour = new Object[liste.size()][4];
     
        for(int i = 0; i < liste.size(); i++)
        {
            retour[i][0] = liste.get(i).getNom();
            retour[i][1] = majeureDao.countCours(liste.get(i).getId());
            retour[i][2] = new BoutonVoir(liste.get(i).getId(), 4);
            retour[i][3] = new BoutonSupprimer(liste.get(i).getId(), 4);
        }
     
        return retour;
    }
    Ma méthode setData() présente dans la classe PersoModel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /**
     * Fait une mise à jour du tableau et lance un rafraichissement
     */
    public void setData(Object[][] newData){
        data = newData;
        super.fireTableDataChanged();
    }
    Voilà je ne sais pas si ça suffit, je ne pouvais pas tout copier car le code est très long. Si vous avez besoin d'autres choses pour comprendre mieux mon problème n'hésitez pas !

    Merci d'avance pour votre aide car je désespère depuis plusieurs heures maintenant

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé mon erreur tout seul en relisant le code à tête reposée et j'ai fini par trouver l'erreur !

    Je n'avais pas initialisé ma variable model ... comme quoi il vaut mieux se reposer un peu quand on code sinon on fait des erreurs bêtes !

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

Discussions similaires

  1. Problème de rafraîchissement d'un JTable
    Par arafat877 dans le forum Composants
    Réponses: 4
    Dernier message: 25/01/2011, 21h53
  2. Réponses: 2
    Dernier message: 27/02/2006, 13h27
  3. [Jtable] problème de suppression dans une Jtable
    Par gianni17 dans le forum Composants
    Réponses: 1
    Dernier message: 02/12/2005, 18h36
  4. [MFC] Problème de rafraîchissement
    Par nmarf dans le forum MFC
    Réponses: 5
    Dernier message: 16/09/2005, 10h55
  5. Problème de rafraîchissement de données...
    Par Alain Dionne dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/03/2004, 21h07

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