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 :

JList actualiser le contenu


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut JList actualiser le contenu
    bonjour
    dans un programme j'utilise un JList

    j'ai un JPanel qui contient le JScrollPane qui lui contient la Jlist qui prend ce données d'un Vector qui vient d'un autre Class et qui lui récupère ces donnée d'une table dans une base de donnée
    ça me semble assez complexe pour faire ça mais j'ai rien trouvé de mieux

    pour "mieux" voir, un peu de 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
    // -- dans la class FenetreBD 
    // ---- dans le "public class FenetreBD extends JFrame"
    DialogueBD bd_dialogue = new DialogueBD();
    private JPanel container = new JPanel();
    private JList liste = new JList(bd_dialogue.afficher());
    private JScrollPane frameliste = new JScrollPane(liste);
     
    // ---- dans le "public FenetreBD"
    container.add(frameliste);
     
    // -- et la class DialogueBD
    Vector afficher (){
            java.util.Vector<String> contenuliste = new java.util.Vector<String>();
            System.out.println(contenuliste);
            try {
                ResultSet réponse = requete.executeQuery("select refpro from produit");
                while (réponse.next()) {
                    contenuliste.add(réponse.getString("refpro"));
                }
            } catch(Exception e){System.out.println(e);}
            System.out.println(contenuliste);
            return contenuliste;
        }
    après modification du contenu de la table (ajout, suppr, modif) je souhaite réactualiser la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste = new JList(bd_dialogue.afficher());
    frameliste = new JScrollPane(liste);
    j'ai regardé, la demande vers DialogueBD passe bien dans Vector affichage
    j'ai une réponse mais ça ne modifi pas le contenu de la liste visuellement et je dirais même que ça fauce le contenue de la liste

    vous pouvez m'aider ?

    si vous souhaiter le code complet des 2 classes pour voir plus clair, n'hésitez pas

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Bonjour,

    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste = new JList(bd_dialogue.afficher());
    frameliste = new JScrollPane(liste);
    ne change pas le contenu de la liste existante, il en crée une nouvelle.

    Utilisez plutôt la méthode setListData de votre JList.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut ça marche
    merci ça a marché

    un autre souci toujours lié à la liste et au rafraichissement

    j'ai mi un bouton de rafraichissement

    si j'appuie sur le bouton, je rerempli la liste
    j'ai ajouté une donné
    j'ai rafraichi, ça apparait

    maintenant, je sélection dans la liste un élément (pour le modifer ou le supprimer)
    et je reclique sur le bouton de rafraichissement
    il effectu le rafraichissement
    et au retour de la variable contenuliste, il me mes ce message d'erreur dans le terminal :
    "org.postgresql.util.PSQLException : le ResultSet n'est pas positionné correctement, vous pouvez peut-être appeler next()."

    puis si je reclique à nouveau sur rafraichissement, le message n'apparait plus

    et si je resselectionne quelque chose et que je rafraichi à nouveau, il rafraichi et me remet un message d'erreur

    je me rend compte du moment ou l'erreur apparait en posant des balise au niveau des code de l'affichage de la liste et je suis l'avancé avec le debogueur :
    le message est expédié, passe dans tout le cod, ressort correctement, revien à l'expéditeur et là seulement il y a un message d'erreur.
    et je ne voie vraiment pas d'ou ça peut venir

    voici les différente parti du code :

    .l'affichage de la liste :

    ..appel initiale (FenetreBD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JList liste = new JList(bd_dialogue.afficher());
    ..appel de rafraichissement (FenetreBD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste.setListData(bd_dialogue.afficher());
    ..traitement des requêtes d'appel (DialogueBD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Vector afficher (){
            java.util.Vector<String> contenuliste = new java.util.Vector<String>();
            try {
                ResultSet réponse_aff = requete.executeQuery("select refpro from produit");
                while (réponse_aff.next()) {
                    contenuliste.add(réponse_aff.getString("refpro"));
                }
            } catch(Exception e){System.out.println(e);}
            System.out.println(contenuliste);
            return contenuliste;
        }
    .la sélection dans la liste :

    ..appel de la sélection (FenetreBD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    liste.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
            refpro = (String)liste.getSelectedValue();
            Object[] tableau = bd_dialogue.select(refpro);
     
            npro = (String)tableau[0];
            case_col2.setText((String)tableau[1]);
            case_col3.setText((String)tableau[2]);
            case_col4.setText((String)tableau[3]);
            case_col5.setText((String)tableau[4]);
        }
    });
    ..traitement de la requête d'appel (DialogueBD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Object[] select (String refpro){
            Object[] tableau = new Object[5];
            try {
                ResultSet réponse = requete.executeQuery("select npro, refpro, libelle, prix, qstock from produit where refpro like '" + refpro + "'");
                réponse.next();
                tableau[0] = réponse.getString("npro");
                tableau[1] = réponse.getString("refpro");
                tableau[2] = réponse.getString("libelle");
                tableau[3] = réponse.getString("prix");
                tableau[4] = réponse.getString("qstock");
            } catch(Exception e){System.out.println(e);}
            return tableau;
        }
    on dirait que chaque fois que je passe dans le code "traitement de la requête d'appel (DialogueBD)", il se passe un truc qui crée une erreur pour le rafraichissement

    si vous souhaiter l'intégralité du code, n'hésitez pas à demander
    en espérant que quelqu'un saura m'aider
    bonne soirée

  4. #4
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    "org.postgresql.util.PSQLException : le ResultSet n'est pas positionné correctement, vous pouvez peut-être appeler next()."
    Apparemment c'est un problème dans postgresql, pas dans java et son JList...
    non ?

Discussions similaires

  1. [WD10] [zone repetee] Actualiser le contenu
    Par Root_JDK dans le forum WinDev
    Réponses: 5
    Dernier message: 01/05/2007, 17h34
  2. [JList] trier le contenu d'une JList
    Par Clorish dans le forum Composants
    Réponses: 5
    Dernier message: 30/03/2007, 10h07
  3. Comment actualiser le contenu d'un répertoire
    Par nbelg27 dans le forum Access
    Réponses: 9
    Dernier message: 28/04/2006, 10h22
  4. actualiser le contenu d'une div
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 08/02/2006, 10h17
  5. [JList] actualisation
    Par clairette dans le forum Composants
    Réponses: 7
    Dernier message: 25/07/2005, 15h46

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