bonjour à tous.
J'ai des JComboBox editable.
J'ai aussi ecris des methodes qui remplace du text dans un JTextField et qui selectionnent des endroit donné (setSelectionStart)
J'aimerai savoir comment récuperer le JTextField du JComboBox.
J'ai tenté :
mais ca ne fonctionne pas, enfin ca ne selectionne rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ((JTextField) MonComboBox.getEditor().getEditorComponent());![]()
voici ma methode.
Elle recupere un JTextField et son keyEvent et autocomplete ou corrige la date de naissance.
si l'user tappe :
6983 ou 06/09/1983 ou 6/9/1983 ou .... ca remplace/complete(à la saisie) et affiche au final 06/09/1983
J'ai rien trouvé qui me convenais à 100% alors j'ai programmer cette fonction. J'avais en premier un JFormatedTextField, mais le code etait ET plus long, Et moins fonctionnel.
ca fonctionnais tres bien, mais j'ai par la suite transformer mon JTextField en JComboBox et depuis bah ca ne fonctionne pas
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 public static void dateNaissanceCompletion(JTextField a, java.awt.event.KeyEvent e){//si le premier chiffre tappé est >2 alors on rajoute 0 devant, puis le chiffre puis / if((a.getText().length()==1)&&(e.getKeyCode()>99)&&(e.getKeyCode()<106)){ a.setText("0"+e.getKeyChar()+"/"); a.setSelectionStart(3); } //pareil pour la deuxieme partie else if((a.getText().length()==4)&&(e.getKeyCode()>97)&&(e.getKeyCode()<106)){ a.setText(a.getText().substring(0,3)+ "0"+e.getKeyChar()+"/"); a.setSelectionStart(6); } //maintenant on supprime les / si l'user les tappes alors qu'elles existent else if (((a.getText().length()==4)||(a.getText().length()==7))&&(e.getKeyCode()==111)){ a.setText(a.getText().substring(0,a.getText().length()-1)); a.setSelectionStart(a.getText().length()); } //si le prochain chiffre est un 0 alors on est née en 200X else if((a.getText().length()==7)&&(e.getKeyCode()==96)){ a.setText(a.getText().substring(0,6) + "20" + e.getKeyChar()); a.setSelectionStart(9); } //sinon 19XX else if((a.getText().length()==7)&&(e.getKeyCode()!=98)&&(e.getKeyCode()!=8)&&(e.getKeyCode()!=97)){ a.setText(a.getText().substring(0,6)+ "19"+e.getKeyChar()); a.setSelectionStart(9); } //maintenant on rajoute les / pour eviter de les tapper else if (((a.getText().length()==2)||(a.getText().length()==5))&&(e.getKeyCode()!=8)){ a.setText(a.getText()+"/"); a.setSelectionStart(a.getText().length()); } //si la date dépasse les 10 char, on efface le dernier else if (a.getText().length()==11) a.setText(a.getText().substring(0,10));![]()
Mon code est déjà assez gore, je vais pas devoir faire des JCombobox NON editable qui se cacheront et des JTextField qui s'afficheront si on veux modifier les date .... (solution que j'envisage de plus en plus ! )
[ Sujet déplacé depuis le forum java par Viena ]
Les Règles du Forum
Partager