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:
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 @.NomId@5f4275d4
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"); } }
Partager