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 :

Méthode setSelectedItem non fonctionnelle


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Par défaut Méthode setSelectedItem non fonctionnelle
    Bonjour,

    Voila, après avoir rempli mon JCombobox par le biais d'un DefaultComboBoxModel.

    Je voudrai remettre la sélection que j'ai sauvegarder dans une DB.

    Mais, lorsque j'utilise la méthode setSelectedItem, celà ne fonctionne pas.

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Supposition :
    Tu fais une première lecture dans ta DB pour récupérer la liste des items.
    tu obtient liste1 = [A, B, C, D]

    Une deuxième lecture dans la base pour avoir l'élément sélectionné tu obtient B.

    Si tu remplis ta liste avec liste1 et qu'en suite tu fais setSelectedItem(B) ça ne marchera pas parce que même si le B de la liste1 à les mêmes valeurs que le B que tu a reçu suite à ta deuxième lecture, ce sont des instances différents.

    Or setSelectedItem doit sûrement se basé sur le fait de trouver la même instance.

    Le mieux serait peut-être de :
    - soit trouver dans la liste1 une instance B contenant les mêmes valeurs que le B de la deuxième lecture, et appelé setSelectedItem(B de liste1)

    - soit trouver l'index de une instance B de la liste1 contenant les mêmes valeurs que le B de la deuxième lecture, et appelé setSelectedIndex(index)

    En espérant être clair.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Par défaut
    Citation Envoyé par Mathieu.J Voir le message
    Supposition :
    Tu fais une première lecture dans ta DB pour récupérer la liste des items.
    tu obtient liste1 = [A, B, C, D]

    Une deuxième lecture dans la base pour avoir l'élément sélectionné tu obtient B.

    Si tu remplis ta liste avec liste1 et qu'en suite tu fais setSelectedItem(B) ça ne marchera pas parce que même si le B de la liste1 à les mêmes valeurs que le B que tu a reçu suite à ta deuxième lecture, ce sont des instances différents.

    Or setSelectedItem doit sûrement se basé sur le fait de trouver la même instance.

    Le mieux serait peut-être de :
    - soit trouver dans la liste1 une instance B contenant les mêmes valeurs que le B de la deuxième lecture, et appelé setSelectedItem(B de liste1)

    - soit trouver l'index de une instance B de la liste1 contenant les mêmes valeurs que le B de la deuxième lecture, et appelé setSelectedIndex(index)

    En espérant être clair.
    Merci, pour ton explication.

    Mais, lorsque je crée une nouvelle instance avec des données identique à celle contenue dans la liste.
    Ca marche, mais pas quand je la lis de la classe.
    Bisard, vous avez dit bisard

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Par défaut
    Afin de trouvé l'item à afficher il vaux complété une la méthode setSelectedItem
    de la classe DefaultComboBoxModel comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Override
    	public void setSelectedItem(Object anItem) {
    		if (anItem instanceof PhoneType){
    			if (phonetypes.containsKey(((PhoneType)anItem).getIndex())){
    				phoneType = phonetypes.get(((PhoneType)anItem).getIndex());
    				return;
    			}
     
     
    		}
    		phoneType=(PhoneType)anItem;
    	}
    Et ne pas oublier de overrider la méthode equals de votre modèle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public boolean equals(Object obj){
    		if (obj instanceof PhoneType){
    			if (((PhoneType)obj).getIntitule().equals(this.getIntitule())){
    				return true;
    			}
    		}
     
    		return false;
    	}
    Ah oui, la seule chose que je ne comprends pas, c'est que s'oublie de rafraichir l'écran avec repaint , il n'afiche pas les changements.

    Si vous avez la solution !!!

Discussions similaires

  1. Une méthode @WS REST avec un PUT non fonctionnel
    Par geforce dans le forum REST
    Réponses: 0
    Dernier message: 27/10/2014, 15h08
  2. timage non fonctionnel !!
    Par micky13 dans le forum Delphi
    Réponses: 5
    Dernier message: 13/05/2006, 07h21
  3. Update non fonctionnel
    Par kissmytoe dans le forum Access
    Réponses: 7
    Dernier message: 07/03/2006, 18h37
  4. [REPORTS] Order BY non fonctionnel
    Par sdiack dans le forum Reports
    Réponses: 2
    Dernier message: 10/02/2006, 18h10
  5. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52

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