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

AWT/Swing Java Discussion :

Probleme de ListCellRenderer


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut Probleme de ListCellRenderer
    J'aime bien l'algo, les trucs bien propres et aux normes, ça fait quelques années deja que je code dans à peu près tous les langages modernes et utilisés, j'ai toujours aimé relever les défis, mais la je dois avouer que j'ai du mal avec JAVA... c'est un peu comme SEGA, c'est plus fort que toi :p


    Pour en venir au petit souci :

    Alors je développe donc une application de type "application de gestion"

    Et bien entendu dans cette application, j'ai des espèces de formulaires.

    Comme tout formulaire j'ai des jCombo des jList... des jTout... et j'en passe

    Dans mes combo et mes list j'ai des items issus de requetes à ma BDD embarquée (HSQLDB)

    avant de poster j'ai fait des petits recherches sur notre ami commun Google, et bien entendu dans ce même magnifique forum (qui m'a permis de sortir de certaines situations délicates)

    J'ai trouvé des sujets dont les gens avaient apparament le même but que moi, c'est à dire :

    Extraire d'une requete banale, une liste 2 valeurs bien souvent (int ID, String VALEUR)

    Bien entendu dans la listBox ou comboBox on veut afficher le String (uniquement).

    Lors d'un click sur un item on se sert de l'ID associé à ce String pour en faire quelque chose (peu importe quoi d'ailleurs...)

    La plupart des réponses que j'ai pu lire c'est : sers toi d'un renderer, sers toi d'un listCellRenderer, sers toi d'un defaultListCellRenderer... à force je me suis douté de quoi il fallait se servir :p

    L'inconvénient, c'est que je n'arrive pas trop à saisir comment ça marche exactement (avant quand j'étais petit et que je fesais du VB.NET il y avait dans les listes une colonne invisible associée ou l'on pouvait stocker la clé, petite fontionnalité bien pratique parfois....)

    j'ai aussi lu des réponses style : redéfinis la méthode toString()... mais de qui de quoi ou comment pourquoi ?

    Pour le moment je me suis fait une petite classe coupleValeurs que voici :

    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
    public class CouplesValeurs {
     
        private String lib;
        private int id;
     
     
        /** Creates a new instance of CouplesValeurs */
        public CouplesValeurs() {
        }
     
        public String getLib() {
            return lib;
        }
     
        public void setLib(String lib) {
            this.lib = lib;
        }
     
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public String toString()
        {
            return lib;
        }
     
     
    }
    Bon une classe assez basique en somme il n'y a que des accésseurs... et j'ai rajouté la méthode toString() au kazoo (cas ou) :p

    Donc j'ai d'un coté mes objets que je peux représenter sous forme de couple, d'un autre coté mes Combo (moult mais en vain..)

    Ensuite pour faire le lien entre les 2, c'est a dire mettre mes Objets dedans et n'affichant que le String, et en obtenant la valeur associée lorsque je sélectionne un élément... je lutte depuis 1 jour et 1/2... et franchement ma rentabilité et mon amour prorpre en prennent un coup :p

    Sur mes combo et mes list j'ai deja des DefaultComboBoxModel et DefaultListModel faut encore y associer des default(List/Combo)CellRenderer ?

    Enfin bon si quelqu'un peut me donner quelques conseils... ce ne sera pas de refus

    Thanks a lot

    Cat

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Je ne comprends pas vraiment le problème.
    Tu n'as pas besoin de renderer grâce au toString().
    S'il y a bien un truc que je ne fais quasi jamais ce sont des ListCellRenderer. A moins d'avoir besoin de faire un choix de couleurs par exemple (c'est plus sympa dans la combo d'avoir "Bleu" puis un carré de cette couleur que d'avoir simplement le texte).

    Tu met dans ta JComboBox la liste de CouplesValeurs et quand tu fais maCombo.getSelectedItem() tu récupèreras le CouplesValeurs correspondant.

    Ou bien ?

    Sinon tu peux utiliser le binding en utilisant les librairies JGoodies Binding ou Spring (mais ça demandera un investissement de départ assez important pour comprendre les mécanismes).
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 838
    Points : 22 846
    Points
    22 846
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par catwomanette
    Sur mes combo et mes list j'ai deja des DefaultComboBoxModel et DefaultListModel faut encore y associer des default(List/Combo)CellRenderer ?
    Oui si tu veux en configurer l'apparence ; par exemple :

    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
     
    class CouplesValeursListCellRenderer extends DefaultListCellRenderer {
      private static final String TEXT_PATTERN ="({0}, {1})";
      private static final String TIP_PATTERN ="<html><body>(<b>{0}</b>, <i>{1}</i>)<body></html>";
     
      /** {@inheritDoc}
      */
      @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        String text = null;
        String tip = null;
        if (value instanceof CouplesValeurs) {
          CouplesValeurs couple = (CouplesValeurs)value;
          text = MessageFormat.format(TEXT_PATTERN, couple.getID(), couple.getLib());
          tip = MessageFormat.format(TIP_PATTERN, couple.getID(), couple.getLib());
        }
        setText(text);
        setToolTipText(tip);
        return this; 
      } 
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par natha
    Je ne comprends pas vraiment le problème.
    Tu n'as pas besoin de renderer grâce au toString().
    Selon toi j'ai juste a affecter à la combo un tableau de CouplesValeurs et cela va automatiquement m'afficher la méthode toString() et lors de la selection d'un élément je pourrai en récupérer l'ID ?

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par catwomanette
    Selon toi j'ai juste a affecter à la combo un tableau de CouplesValeurs et cela va automatiquement m'afficher la méthode toString() et lors de la selection d'un élément je pourrai en récupérer l'ID ?
    Tout à fait. Mieux, tu récupèreras l'objet CouplesValeurs.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    écoute je vais tester, j'espère que c'est aussi simple que ça :p

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    euh je suis passé sur un tout autre genre d'erreur maintenant =(

    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
     
    //dans mes déclarations j'ai :
    protected ResultSet rs;
    protected CouplesValeurs[] cvComboFormePhysique;
     
    //dans mon constructeur j'ai
     public AjoutExperience(Frame owner,String title,boolean modal){
            super(owner,title,modal);
     
            initComponents();
            this.setLocationRelativeTo(this.getParent());
     
            modelComboFormePhysique = new DefaultComboBoxModel();
     
            try
            {
                rs = SQLDataAcces.getResultSet("select LBLFORMEPHYSIQUE from FORME_PHYSIQUE order by LBLFORMEPHYSIQUE");
                int i = 0;
                cvComboFormePhysique = new CouplesValeurs[rs.getFetchSize() + 1];
                System.out.println("la ca passe et le RS a une taille de : " + rs.getFetchSize());
     
                while (rs.next())
                {
                    System.out.println("la ca passe 1");
                    cvComboFormePhysique[i].setIdLib(rs.getString(1));
                    System.out.println("la ca passe 2");
                    cvComboFormePhysique[i].setLib(rs.getString(1));
                    System.out.println("la ca passe 3");
                    modelComboFormePhysique.addElement(cvComboFormePhysique[1]);
                    i++; //c'est juste pour donner l'emplacement de l'object dans la tableau
                }
     
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }        
     
            comboFormePhysique.setModel(modelComboFormePhysique);
     
            comboFormePhysique.setSelectedIndex(-1);
     
        }
    Et voici le rapport de combat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    la ca passe et le RS a une taille de : 1
    java.lang.NullPointerException
    la ca passe 1
    l'erreur m'indique la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvComboFormePhysique[i].setIdLib(rs.getString(1));
    j'ai pourtant bien l'impression d'avoir tout initialisé =(

  8. #8
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Tu as initialisé le tableau mais pas les valeurs du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cvComboFormePhysique = new CouplesValeurs[rs.getFetchSize() + 1];
    for (int i = 0; i < cvComboFormePhysique.length; i++) {
        cvComboFormePhysique[i] = new CouplesValeurs();
        // FIXME ...
    }
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    D'accord j'avais zappé l'initialisation des valeurs du tableau (c'est fait maintenant) et la l'affichage est somme toute assez bizzare ca me met des valeurs inintelligibles

    comme :

    CouplesValeurs@1f4b2xxx
    CouplesValeurs@4fb47xxx

    etc..

    pourtant j'ai bien redéfini le méthode toString de ma classe CouplesValeurs

    D'ailleurs autre problème étonnant, la méthode rs.getFetchSize() (rs étant un résultset) me renvoi la valeur 1 alors que je sais pértinnement qu'il y a plus d'une valeur dans la ResultSet, et lors du passage dans la boucle while(rs.next) il me parcours bien toutes les occurences, c'est zarb

  10. #10
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ces valeurs "bizarres" correspondent à la méthode toString() par défaut de la classe Object.
    Tu as un truc qui colle pas.

    Soit tu n'as pas toString() dans CouplesValeurs comme tu le penses.

    Je trouve aussi kkch de bizarre c'est que dans le code de CouplesValeurs que tu nous a montré au départ tu as l'id qui est un int et dans le code avec le resultset tu fais cvComboFormePhysique[i].setIdLib(rs.getString(1)); et cvComboFormePhysique[i].setLib(rs.getString(1)); .

    De plus ta requête ne récupère qu'un champ et pas les 2.

    Regarde et si tu n'arrives toujours pas, poste ton code complet, à savoir CouplesValeurs (vérifie que tu n'as pas 2 classes portant ce nom, ce qui pourrait porter à confusion), ton code de lecture en base, ton code avec la combo box.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  11. #11
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Le ListCellRenderer par défaut (qui s'appelle DefaultListCellRenderer) appelle toString sur les objets contenus dans la JList ou la JComboBox, et met le résultat dans un JLabel.

    Lorsque tu appelles toString sur un tableau, ça te renvoie un truc du style : "[ nom de la classe @ addresse mémoire du tableau".

    Si ta JComboBox doit contenir des tableaux, il faut redéfinir un renderer à toi qui permettra de changer l'affichage par défaut. Mais d'après ta description précédente, j'avais l'impression que la JComboBox devait contenir directement les CouplesValeurs, et on des tableaux. A toi de voir.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Bien vu !!

    D'une part tu as raison, entre le moment ou j'ai posté et ou j'ai testé le code j'ai refait la classe CouplesValeurs en la modifiant un peu, et la méthode toString fut oubliée

    maintenant l'affichage se fait normalement =) (on voit l'expérience des erreurs en mousse)

    pour satisfaire la curiosité voila le code de la nouvelle version :
    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
     
    public class CouplesValeurs {
     
        private String lib;
        private int idInt;
        private String idLib;
     
     
        /** Creates a new instance of CouplesValeurs */
     
        public CouplesValeurs() {
     
        }
        public CouplesValeurs(String libb, String idLibb) {
            this.idLib = idLibb;
            this.lib = libb;        
        }
     
        public CouplesValeurs(String libb, int idIntt) {
            this.idInt = idIntt;
            this.lib = libb;
        }
     
        public String getLib() {
            return lib;
        }
     
        public void setLib(String lib) {
            this.lib = lib;
        }
     
        public int getIdInt() {
            return idInt;
        }
     
        public void setIdInt(int idInt) {
            this.idInt = idInt;
        }
     
        public String getIdLib() {
            return idLib;
        }
     
        public void setIdLib(String idLib) {
            this.idLib = idLib;
        }
     
        public String toString()
        {
            return this.lib;
        }
     
     
    }
    j'ai mis idLib et idInt, parceque selon mes tables j'aurai soit un couple int-String soit un couple String-String

    donc comme ca j'ai mes 2 cas de prévus et selon le cas j'utilise l'id adéquat

    sinon afin de limiter les boucles inutiles j'ai inclus l'initialisation des valeurs du tableau dans la boucle de parcours de ResultSet

    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
    try
            {
                rs = SQLDataAcces.getResultSet("select LBLFORMEPHYSIQUE from FORME_PHYSIQUE order by LBLFORMEPHYSIQUE");
                int j = 0;
     
                cvComboFormePhysique = new CouplesValeurs[rs.getFetchSize() + 1];
                // ^^ ça ça chie je sais pas pourquoi 
                cvComboFormePhysique = new CouplesValeurs[100];
                // ^^ ça ça marche je sais pas pq :(
     
                System.out.println("la ca passe et le RS a une taille de : " + rs.getFetchSize());
                // ^^ et donc ça ça m'affiche 1 alors que les RS comporte au moins 4 occurences ...
     
                while (rs.next())
                {
                    cvComboFormePhysique[j] = new CouplesValeurs();
                    System.out.println("la ca passe 1");
                    cvComboFormePhysique[j].setIdLib(rs.getString(1));
                    System.out.println("la ca passe 2");
                    cvComboFormePhysique[j].setLib(rs.getString(1));
                    System.out.println("la ca passe 3");
                    modelComboFormePhysique.addElement(cvComboFormePhysique[j].toString());
                    j++; //c'est juste pour donner l'emplacement de l'object dans la tableau
                }
     
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
    le seul problème qui reste c'est : pourquoi le rs.getFetchSize() ne met pas la bonne valeur je vois pas pourquoi, d'ailleurs après la boucle est entièrement parcourue (c'est à dire toutes les occurences)

  13. #13
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par xavlours
    [...]
    Elle met pas des tableaux...
    Par contre elle met plusieurs fois la même valeur dans son comboBoxModel.

    => modelComboFormePhysique.addElement(cvComboFormePhysique[1]);
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    nah ça c'est une erreur conne c'est une variable qui doit être à la place du 1 la varaible qui sert de compteur un int soit i ou j

  15. #15
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ta requête de ramène qu'une colonne. C'est faux si tu souhaites avoir plusieurs valeurs et construire un objet cohérent.

    Tu devrais avoir un truc du genre select ID_INT, ID_LIB, LIB from ...

    Sinon il faut corriger ton 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
    try
            {
                rs = SQLDataAcces.getResultSet("select ID_INT, ID_LIB, LIB from FORME_PHYSIQUE order by LBLFORMEPHYSIQUE");
                int j = 0;
     
                while (rs.next())
                {
                    CouplesValeurs cv = new CouplesValeurs();
                    cv.setIdInt(rs.getInt(1));
                    cv.setIdLib(rs.getString(2));
                    cv.setLib(rs.getString(3));
                    modelComboFormePhysique.addElement(cv);
                }
     
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
    C'est plus simple comme ça mais il faut corriger la requête.

    Ton autre erreur est de mettre la valeur toString dans ton comboModel au lieu de mettre l'objet directement.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  16. #16
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    [EDIT] Totalement grillé par natha, donc on va dire +1
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    en fait la justement je fais une requete sur une table qui n'a qu'une seule colonne car c'est une table qui a un ID sous forme de VARCHAR (elle me sert d'id relatif sur une autre table qui a un ID complexe constitué de la concaténation de 3 chaines de caractères)

    du coup dans ma combo j'aurai une liste de texte non répétés (ou uniques)

    mon object CouplesValeurs est utilisé pour divers résultats de requetes donc j'ai prévu tous les cas dedans

    Citation Envoyé par xavlours
    Deux petites remarques (dont tu te ficheras peut-être complètement) sur ton algo :
    Nah je me fouts jamais des remarques sur les algos au contraire si ca peut aider à voir le problème différément...

    Citation Envoyé par xavlours
    - ton model ne contient pas les objets de type CoupleValeur, mais des Strings. Ca peut suffire, mais tu peux mettre les objets directement dedans (enlever ton appel à toString(), le renderer s'en chargera).
    Si je peux éviter le renderer.... :p

    Citation Envoyé par xavlours
    - tes objets de type CoupleValeurs sont stockés à la fois dans un tableau (cvComboFormePhysique) et dans un ListModel (modelComboFormePhysique). Si tu modifies le tableau, la JComboBoxne réagira pas, vu que le ListModel n'aura pas changé.
    Donc du coup je vais faire gaffe, car il peut être modifié le combo si l'utilisateur veut ajouter un élément (mais qu'une seule fois)

    dans le cas ou le user ajoute un élément je vais devoir rafraichir le Model

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 34
    Points : 15
    Points
    15
    Par défaut
    Lool

    c'est Edit sur Edit :p

    heureusement que j'ai édité le mien avant que tu édites le tien ouff

    sinon j'aurais po vu :p

  19. #19
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    J'ai supprimé mon message parce que le code de natha corrige les deux aspects que j'ai mentionné. Il devrait marcher à merveille.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  20. #20
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par catwomanette
    Si je peux éviter le renderer.... :p
    Puisque je te dis que tu n'en as pas besoin ! Même si tu met directement tes objets dans la combo !
    C'est le renderer par défaut qui va faire un toString() pour l'affichage de la valeur. Tu dois juste te soucier d'implémenter la méthode toString() dans tes objets à mettre dans des listes ou combo.

    Regarde mon dernier post en page 1 de ce thread.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. probleme ListCellRenderer et JComboBox
    Par Sp4ce dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 21/09/2007, 04h17
  2. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 19h07
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 20h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 15h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 11h13

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