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 :

[Swing] JList avec elements uniques


Sujet :

Composants Java

  1. #1
    Invité
    Invité(e)
    Par défaut [Swing] JList avec elements uniques
    Bonjour,

    depuis une JList et un jButton j'ajoute des objets dans une seconde JList.
    Ma seconde JList ne doit pas comprendre deux objets identiques.

    Comment faire pour vérifier élégament que dans mon contenu actuel je ne trouve pas les contenu à ajouter et l'y ajouter ?

    Pour l'instant je suis dans deux boucles imbriquées du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //ajout = tableaux d'objets à ajouter
    //model = model da ma liste
    for (int i=0; i<ajout.length; i++){
       for(int j=0; i<model.getSize(); j++){
          if(ajout[i]!=model.get(j)){
             model.addElement(ajout[i]);
          }
       }
    }
    maliste.setModel(model);
    Mais ça ne fonctionne pas vraiment et je ne trouve pas ça trés propre

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Le problème vient peut-être du fait que tu compare des références d'objet ( != ). Essai plutot de définir une méthode "equals" pour tes objets et remplace le test par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(!ajout[i].equals(model.get(j))){
    par contre dans ta deuxième boucle ( j ), c'est normal que ta condition d'arrêt porte sur le "i" ??

  3. #3
    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
    Tu peux essayer de définir un ListModel qui utilise un Set. Je l'ai fait avec un TreeSet, et ça marche bien, mais pour la méthode getElementAt(int) c'est pas optimal.

    Sinon, je suppose que tu utilises un DefaultListModel, tu remplace ton code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(int i = 0; i < ajout.length; i++) {
      if(! model.contains(ajout[i])) {
        model.addElement(ajout[i]);
        model.fireIntervalAdded(ajout[i], i, i); //ca peut etre encore amélioré.
      }
    }
    "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.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par iohack
    par contre dans ta deuxième boucle ( j ), c'est normal que ta condition d'arrêt porte sur le "i" ??
    Non c'est praceque j'ai réécris le code en vitesse, c'est une distraction.


    Xavlours :
    FireIntervalAdded n'est pas public..
    Comment le rendre public ? (la classe qui contiendras ma méthode d'ajout dérive de JList..

    Ha ba
    à la fin de la boucle fonctionne aussi..

  5. #5
    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
    Citation Envoyé par Blaise1
    FireIntervalAdded n'est pas public..
    Comment le rendre public ? (la classe qui contiendras ma méthode d'ajout dérive de JList..
    Ah oui, j'avais oublié. Je pense que tu peux simlpement supprimer cette ligne.

    Ca devrait aussi fonctionner sans préciser setModel(model), si tu utilises bien un DefaultListModel.
    "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.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/11/2014, 09h26
  2. Pb clic sur JList avec swing
    Par damien27000 dans le forum Composants
    Réponses: 7
    Dernier message: 30/08/2007, 19h40
  3. [Swing] JPanel avec sa JScrollBar qui scrolle toute seule
    Par chcoust dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 22/11/2006, 14h37
  4. Réponses: 7
    Dernier message: 04/10/2006, 15h45
  5. [Swing] execution avec Runtime.getRuntime().exec
    Par benssj5 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 25/08/2004, 14h54

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