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 :

Problème de selection dans jComboBox avec un ListCellRenderer


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut Problème de selection dans jComboBox avec un ListCellRenderer
    Bonjour,

    J'ai une jComboBox avec un ListCellRenderer pour afficher des icones et du texte.
    Mes enregistrements se listent bien et s'affichent bien.
    Lorsque je clique dessus, je retrouve les bons texte SAUF pour le premier !!!!

    Je vois ou ca coince ...
    Si vous avez une idée ?

    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
    public JComboBox getJComboBoxImage() {
    	// Chargement des images et de création du tableau d'indices.
    	String home = System.getProperty("user.dir");
    	couleursComboBox[0][0]= "Rouge";
    	couleursComboBox[0][1]= "\\images\\rouge.jpg";
    	couleursComboBox[1][0]= "Vert";
    	couleursComboBox[1][1]= "\\images\\vert.jpg";
    	couleursComboBox[2][0]= "Bleu";
    	couleursComboBox[2][1]= "\\images\\bleu.jpg";
    	couleursComboBox[3][0]= "Violet";
    	couleursComboBox[3][1]= "\\images\\violet.jpg";
    	couleursComboBox[4][0]= "Orange";
    	couleursComboBox[4][1]= "\\images\\orange.jpg";
     
    	//Création des tableaux
           	imagesComboBox = new ImageIcon[couleursComboBox.length];
           	Integer[] intArray = new Integer[couleursComboBox.length];
     
    	for (int i = 0; i < couleursComboBox.length; i++) {
    	        intArray[i] = new Integer(i);
    	        imagesComboBox[i] = new ImageIcon((String)home.substring(0,home.length()-9).trim() + (String)couleursComboBox[i][1].trim());
    	            if (imagesComboBox[i] != null) {
    	                        imagesComboBox[i].setDescription(couleursComboBox[i][0]);
    	            }
    	            System.out.println ("List : " + i + " " + intArray[i] + " " + imagesComboBox[i].getDescription());
    	  }
     
    	//Création de la jcombobox
    	ColList = new JComboBox(intArray);
    	SimulProgIHM.ComboBoxRenderer renderer= new SimulProgIHM.ComboBoxRenderer();
    	renderer.setPreferredSize(new Dimension(150, 30));
    	ColList.setRenderer(renderer);
     
    	//ColList.setMaximumRowCount(3);
    	//ColList.setSelectedIndex(-1);
     
    	//Ecoute le changement
    	ColList.addItemListener(new java.awt.event.ItemListener() {
    	public void itemStateChanged(java.awt.event.ItemEvent e) {	
    		// TODO Auto-generated Event stub itemStateChanged()
    		if (e.getStateChange() == 2)
    		{
    			//Ici SelectedIndex n'est plus egal à la value du ListCellRenderer !! 
    			System.out.println ("ColList : " + ColList.getSelectedIndex() + " " + ((JLabel) ColList.getRenderer()).getText() + ((JLabel) ColList.getRenderer()).toString());
    		}
    	}
    	});
    	ColList.setVisible(false);
    	return ColList;
    }

  2. #2
    Membre émérite

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Par défaut
    Bonsoir,

    Je ne suis pas sûr qu'utiliser le ListCellRenderer pour récupérer la valeur sélectionnée soit la bonne méthode.

    Dans la méthode itemStateChange, je te conseille de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((JLabel) ColList.getRenderer()).getText()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ColList.getSelectedItem()
    qui dans ce cas renvoi un Integer.

    Benoit

  3. #3
    Membre confirmé
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut
    Bonjour Bboulch,

    Merci pour ta reponse, mais j'aimerai qu'il me renvoi "Rouge" plutot que 0 ...

    A moins qu'à partir de l'item on puisse recuperer le texte ?

  4. #4
    Membre confirmé
    Femme Profil pro
    Developpeur
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut
    Bon, j'ai mis cela pour récupérer le texte "Rouge" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ColList.getSelectedIndex()][0]
    ca fonctionne, mais ca m'explique pas pourquoi dans mon code je peux pas récupérer le premier élément du ListCellRenderer...

  5. #5
    Membre émérite

    Profil pro
    Technicien
    Inscrit en
    Février 2009
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2009
    Messages : 338
    Par défaut
    Sauf erreur de ma part, le CellListRenderer a pour vocation d'afficher. Et non pas de dire ce qui est sélectionné.

    Dans la liste déroulante affichées, ce sont les valeurs "0", "1", "2"... qui sont présentes ? Du coup, ce sont les valeurs que tu récupères avec getSelectedIndex().
    Il faudrait afficher les libellés dans la liste déroulante pour les récupérer ensuite avec getSelectedIndex().

    Benoit

Discussions similaires

  1. [MySQL] [Debutant] Problème de selection dans une requete
    Par motard6 dans le forum PHP & Base de données
    Réponses: 37
    Dernier message: 15/06/2009, 09h20
  2. [MySQL] problème d'affichage dans tableau avec bdd Mysql
    Par sinifer dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/05/2009, 09h50
  3. problème d'affichage dans ruby avec ajax
    Par Lunardirc dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 23/06/2008, 14h59
  4. Problème de selected dans un listbox
    Par delichoc dans le forum ASP
    Réponses: 4
    Dernier message: 21/06/2008, 21h06
  5. Réponses: 1
    Dernier message: 20/07/2006, 17h03

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