JComboBox et Vector - Pb d'affichage
Bonjour à tous.
J'ai un petit problème concernant les JComboBox. Voici le contexte.
J'ai une JComboBox éditable créée sur un Vector. J'ajoute une valeur au Vector lorsque l'utilisateur modifie le champ de la JComboBox.
Mais j'ai un problème à l'affichage. La valeur a bien été insérée (je liste les valeurs de la combo dans la console après insertion), c'est bien elle qui est sélectionnée (elle s'affiche dans le champ de la combo), mais lorsque je clique sur l'ascenseur de la combo, c'est vide.
Plus étonnant, lorsque je clique dans ce vide, la dernière valeur de ma combo (donc du Vector) est sélectionnée, et cette fois l'ascenseur fonctionne correctement, avec toutes les valeurs.
J'ai essayé update(), repaint(), revalidate() sur le panel, mais rien n'y fait, pourtant j'ai bien l'impression que c'est un problème d'affichage.
Voici un extrait de mon code :
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
|
private static final String CB_EDITED = "comboBoxEdited";
Vector<Double> zoom;
JComboBox cb;
cb = new JComboBox(zoom);
cb.setEditable(true);
cb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double z = 0;
try
{
String str = cb.getSelectedItem().toString();
z = Double.valueOf(str);
}
catch (NumberFormatException exception)
{
[...]
}
if (z > 0)
{
if (e.getActionCommand().compareTo(MaClasse.CB_EDITED) == 0)
{
if (!vect.contains(z))
{
insertZoomValue(z);
}
/* Tentatives échouées ... */
cb.update(MaClasse.this.getGraphics());
cb.repaint();
revalidate();
f.repaint();
}
}
}
});
private void insertZoomValue(double zoom)
{
int i = 0;
while (i < vect.size() && vect.elementAt(i) < zoom)
{
i++;
}
vect.insertElementAt(zoom, i);
} |
Merci d'avance pour votre aide.
Cordialement.