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é :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
((JTextField) MonComboBox.getEditor().getEditorComponent());
mais ca ne fonctionne pas, enfin ca ne selectionne rien


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.
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));
ca fonctionnais tres bien, mais j'ai par la suite transformer mon JTextField en JComboBox et depuis bah ca ne fonctionne pas

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