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 :

[JComboBox] l'Objet selected s'affiche dans le Renderer


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut [JComboBox] l'Objet selected s'affiche dans le Renderer
    Bonjour,

    J'ai crée un JComboBox avec un ComboBoxModel pour pouvoir y mettre des objets, qui fonctionne parfaitement mais m'affiche des @edmjelkj] donc j'ai créer un renderer pour afficher le libelle de mon objet mais la ou ca coince c'est que ma combobox affiche l'objet @edmjelkj] seulement sur l'objet sélectionné sinon dans la liste il affiche le libelle comme déclaré dans le cellrenderer... est-ce que j'ai oublié quelque chose???

    Voici mon cellrenderer je pense que si y'a problème il doit venir de la sinon n'hésitez pas à me demander d'autres infos si je peux vous aider je ne m'en priverai pas

    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
    @SuppressWarnings("serial")public class CompteComboBoxCellRenderer extends JLabel implements ListCellRenderer {
     
    	public CompteComboBoxCellRenderer() {
    		setOpaque(true);
    		setHorizontalAlignment(LEFT);
    		setVerticalAlignment(CENTER);
    	}
     
    	public Component getListCellRendererComponent(
            JList list,
            Object value,
            int index,
            boolean isSelected,
            boolean cellHasFocus) {
     
    		Compte unCompte = (Compte)value;//Mon objet
     
    		setText(unCompte.getLibelle());//j'affiche le libelle de mon objet un string
    		return this;
    		}
    }
    [EDIT]
    Petite précision quand je parle d'objet selectionné c'est pas celui qui a le focus dans le liste (la couleur de fond est plus foncé...) mais celui qui est tout en haut dans la JComboBox, celui qu'on peut modifier (si la JCombobox est editable bien sure) celui qu'on a choisi en somme.
    [/EDIT]

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    plutot que de modifier le cell renderer, essai de modifier la methode toString de ta classe "Compte". C'est la valeur qui est prise a l'affichage quand il s'agit de classe inhabituelle. (si je me trompe pas)

    tu mets dans la methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @override
    public String toString(){
    return getLibellé();
    }

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Citation Envoyé par eclesia
    plutot que de modifier le cell renderer, essai de modifier la methode toString de ta classe "Compte". C'est la valeur qui est prise a l'affichage quand il s'agit de classe inhabituelle. (si je me trompe pas)

    tu mets dans la methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @override
    public String toString(){
    return getLibellé();
    }
    Justement j'étais passé par la avant mais ca ne me convient pas parce que derrière j'utilise l'autocomplite de swingx et il ne reconnait pas quand on passe par un toString???? je ne sais pas pourquoi mais le comportement de la JComboBox est différent si je crée une combobox qui contient des string et une combobox qui contient des objets et dont j'affiche un String avec toString... C'est pour ca que je voulais passer par un cellrenderer en espérant résoudre le problème de comportement de l'autocomplit...
    Peut etre que ca reviendra au meme..........

  4. #4
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Citation Envoyé par grabriel
    je ne sais pas pourquoi mais le comportement de la JComboBox est différent si je crée une combobox qui contient des string et une combobox qui contient des objets et dont j'affiche un String avec toString...
    C'est normal hein

    Si tu lui donne des String a ta combobox, tu ne pourras récupérer que des String, rien de plus...

    Si tu lui donne des objets, que la méthode toString soit redéfinie ou non, tu récupèreras des objets... Redéfinir la méthode toString, c'est "juste" pour obtenir un meilleur affichage de l'objet...

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Donc ca reviens au meme.....
    De toute facon j'ai refait mes JComboBox avec que des String. C'est dommage ca me fait des manips à faire en plus...

    Merci pour votre aide!!!

  6. #6
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Citation Envoyé par grabriel
    Donc ca reviens au meme.....
    Pas du tout !!!

    J'ai du mal m'expliquer... si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    majComboBox.addItem(monObjet.toString());
    alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    majComboBox.getSelectedItem()
    ... te renverra une string... Galère ensuite pour remettre la main sur l'objet en fait sélectionné...

    Tandis que si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    majComboBox.addItem(monObjet);
    alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    majComboBox.getSelectedItem()
    ... te renverra ton objet directement...

    Cependant, pour l'affichage de ton objet dans la jComboBox, celle-ci invoquera la méthode toString() sur ton objet... à redéfinir donc si tu ne veux pas voir marqué "xxxxx@Maclasse"...

    Je ne comprends donc pas pourquoi tu te compliques la vie...

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/05/2007, 11h47
  2. [Débutant] Objets non affichés dans ma fenêtre
    Par G_angel dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 30/01/2007, 13h03
  3. Nombre d options a afficher dans une liste (select)
    Par wwluigi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 16/01/2007, 15h17
  4. Réponses: 1
    Dernier message: 13/09/2006, 11h50
  5. Elargissement automatique de l'objet SELECT dans IE
    Par djamonag dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/05/2006, 12h01

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