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 :

JCombobox problème valeur affichée


Sujet :

Composants Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Points : 88
    Points
    88
    Par défaut JCombobox problème valeur affichée
    Bonjour à tous.

    Je remplis une JCombobox depuis une table de Base de données sur PostgresSQL. Sur la combo je voudrais afficher par exemple la colonne Nom et récupérer la colonne IdPersonne en faisant clic. Pour cela pas de soucis.

    Mais la valeur qui s'affiche sur ma combo es quelque chose comme:
    NomId@5f4275d4
    alors que je voudrais afficher le Nom de la personne. Lorsque je déplie ma combo je vois bien les Noms de personnes de ma table en liste mais à l'affichage j'ai toujours des valeurs avec @.

    Je vous montre mon code pour si quelqu'un peut m'aider...

    Etant débutant j'accepte volontiers d'autres remarques sur mon code.

    Merci d'avance.

    Classe pour remplir la combo:
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    import java.awt.Component;
    import java.sql.ResultSet;
     
    import javax.swing.DefaultListCellRenderer;
    import javax.swing.JComboBox;
    import javax.swing.JList;
     
     
    public class RemplirCombo {
     
        	   public RemplirCombo(JComboBox combo, String strCol1, String strCol2, String strSql) {
            AdminDB db =  new AdminDB();
     
            ResultSet rst = db.GetResultado(strSql);
            db.CerrarConexion();
     
        	try {
                while (rst.next()) {
                	NomId item1 = new NomId (rst.getString(strCol1), rst.getInt(strCol2));
                	combo.addItem (item1); 
                }
                rst.close();
                combo.setRenderer(new MyRenderer());
        	} catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
     
    class NomId {
     
    	private String nom;
    	private int id;
     
    	public NomId(String nom, int id) {
    		this.nom = nom;
    		this.id = id;
    	}
     
    	public String getNom() {	
    		return this.nom;
     
    	}
     
    	public void setNom(String nom) {
    		this.nom = nom;		
    	}
     
    	public int getId() {
    		return this.id;
    	}
     
    	public void setId(int id) {
    		this.id = id;
    	}
     
    }
    class MyRenderer extends DefaultListCellRenderer {
     
    	@Override
    	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
     
    		NomId nomId = (NomId) value;
     
    		setText(nomId.getNom().toString());
    		return this;
    	}
     
    }

    Classe avec un formulaire qui montre ma combo:

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
     
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
     
    import net.miginfocom.swing.MigLayout;
     
    import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;
     
     
     
    public class frmA extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private JPanel contentPane;
     
     
    	//Create the frame.
     
    	public frmA() {  
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(new MigLayout("", "[114.00px][161.00px,grow][96.00px][52px]", "[27px][27px][16px]"));
    		contentPane.setLayout(new MigLayout("", "[1px]", "[1px]"));
     
    		JLabel lblNewLabel = new JLabel("Nombre");
    		contentPane.add(lblNewLabel, "cell 0 0,grow");
     
    		final JComboBox cboNombre = new JComboBox();
     
    		new RemplirCombo (cboNombre, "nomp", "idpersona", "select nomp, idpersona from tblpersona");
     
    		AutoCompleteDecorator.decorate(cboNombre);
     
    //Obtenir la colonne Id de la table
    		cboNombre.addItemListener(new ItemListener() {			
    			@Override
    			public void itemStateChanged(ItemEvent e) {
    				if (e.getStateChange() == ItemEvent.SELECTED) {
    					NomId nomId = (NomId) e.getItem();
    					System.out.println("tu as sélectionné " + nomId.getId());					
    				}
    			}
    		});
     
    		cboNombre.setEditable(true);
    		contentPane.add(cboNombre, "cell 0 0,grow");
    		JLabel lblNewLabel_1 = new JLabel("Ciudad");
    		contentPane.add(lblNewLabel_1, "cell 0 0,grow");
     
    		JComboBox cboCiudad = new JComboBox();
    		contentPane.add(cboCiudad, "cell 0 0,grow");
     
    		JLabel lblNewLabel_2 = new JLabel("New label");
    		contentPane.add(lblNewLabel_2, "cell 0 0,grow");
     
    		JComboBox comboBox_3 = new JComboBox();
    		contentPane.add(comboBox_3, "cell 0 0,grow");
    	}
     
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Si tu n'utilises pas de modèle pour la ComboBox, alors il faut redéfinir la méthode toString() de l'objet NomId.

    Comme ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
    public String toString()
    {
    	return "NomId [nom=" + nom + ", id=" + id + "]";
    }
    Sinon tu peux aussi lire ceci :

    http://docs.oracle.com/javase/tutori.../combobox.html
    http://baptiste-wicht.developpez.com...t/?page=listes
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Points : 88
    Points
    88
    Par défaut
    Merci. C'était cela qui me manquait. J'était totalement égaré dans ma solution.

    Pour obtenir seulement le Nom de la personne j'ai donc fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	@Override
    	public String toString()
    	{
    		return nom; //"NomId [nom=" + nom + ", id=" + id + "]";
    	}
    J'ai lu un peu sur les modèles de JCombobox. Tu crois que pour mon cas c'est mieux de créer un modèle ou bien ça va comme cela?

    Merci pour tout.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Tu peux te contenter de laisser comme ca, jusqu'à ce que le besoin se fasse sentir pour une autre solution
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Points : 88
    Points
    88
    Par défaut
    Merci encore.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/10/2014, 16h05
  2. [JComboBox] Valeur mémorisée et valeur affichée
    Par Coicatak dans le forum Composants
    Réponses: 10
    Dernier message: 09/06/2012, 15h07
  3. Réponses: 2
    Dernier message: 04/01/2012, 11h11
  4. [JSlider] Problème pour afficher la valeur
    Par michaeljeru dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/03/2007, 22h19
  5. Réponses: 3
    Dernier message: 29/08/2003, 10h57

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