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:
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;
} |