Bonjour,
J'ai une combobox éditable, le but est lorsqu'on y ajoute du texte, il se met en rouge.
On m'a dit d'utiliser un Renderer mais la seule chose que j'arrive à faire avec c'est changer la couleur de la sélection...
Merci d'avance.
Bonjour,
J'ai une combobox éditable, le but est lorsqu'on y ajoute du texte, il se met en rouge.
On m'a dit d'utiliser un Renderer mais la seule chose que j'arrive à faire avec c'est changer la couleur de la sélection...
Merci d'avance.
Commence par donner ton code.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Justement, si je poste c'est que je n'ai pas réussi à faire un code qui corresponde à ce que je veux...
De plus, on m'a dit que pour une combobox éditable il fallait plutôt créer un Editor et non un Renderer.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Donc, j'ai essayé de créer mon Editor, en essayant déjà de colorer en rouge sans tester si c'est du texte. Mais ça ne marche pas, ça me fait complètement disparaître la zone de texte. J'ai surement dû oublier quelque chose...
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 private class ColorComboBoxEditor implements ComboBoxEditor { final protected JLabel editor; protected EventListenerList listenerList = new EventListenerList(); public ColorComboBoxEditor(){ editor = new JLabel(); editor.setForeground(Color.RED); editor.setOpaque(true); } @Override public Component getEditorComponent() { return editor; } @Override public void setItem(Object newValue) { } @Override public Object getItem() { return editor.getBackground(); } @Override public void selectAll() { } @Override public void addActionListener(ActionListener al) { listenerList.add(ActionListener.class, al); } @Override public void removeActionListener(ActionListener al) { listenerList.remove(ActionListener.class, al); } }
J'ai trouvé la solution :
pas besoin de créer son Editor, il faut seulement passer par :
getEditor().getEditorComponent().setForeground(Color.RED);
Pour donner la réponse à ma question :
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 public class MyComboBox extends JComboBox { public MyComboBox() { getEditor().getEditorComponent().addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { checkIfDouble(); } }); getEditor().getEditorComponent().addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { checkIfDouble(); } }); public boolean checkIfDouble(){ JTextField comboTextField = (JTextField)getEditor().getEditorComponent(); String value = comboTextField.getText(); try { double doubleValue = Double.parseDouble(value); } catch (NumberFormatException numberFormatException){ getEditor().getEditorComponent().setForeground(Color.RED); return false; } getEditor().getEditorComponent().setForeground(Color.BLACK); return true; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager