Mise en majuscule des premieres lettres d'un JTextField

coolanso Messages postés 75 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 5 juillet 2014 - 6 déc. 2011 à 14:57
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 6 déc. 2011 à 16:19
Bonjour à tous, j’ai un JTextField qui doit contenir le prénom de l’utilisateur, il se trouve qu’un utilisateur peut avoir plusieurs prénoms, je voudrais que mon code mette toutes les premières lettres du prénom en majuscules.mon code le fait, mais pas correctement, dés que l’espace entre les prénoms atteint 2 caractères y’a problème. Comment pourrais-je l’améliorer ?
Voici mon code :

pri
vate void TxtPrenomEnfantFocusLost(java.awt.event.FocusEvent evt) {                                          
        // TODO add your handling code here:
        String[] tab= getTxtPrenomEnfant().trim().split(" ");/*Nombre de prénom(s) en rapport avec l’espace entre eux, si  cet espace = 1 pas de problème, mais dès qu’il en est supérieur y’a problème*/
        String result=" "  ;
        for(int i=0;i<tab.length;i++){     
            String leTout=tab[i].substring(1);
            String prem=tab[i].substring(0,1).toUpperCase();
            result+= prem.concat(leTout).concat(" ");
        }
          TxtPrenomEnfant.setText(result );
    }                                     

2 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 déc. 2011 à 16:18
Bonjour,

Voilà un moyen d'y parvenir, c'est peut être un peu à raffiner mais ca marche :

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.StringTokenizer;

import javax.swing.JFrame;
import javax.swing.JTextField;





public class Test {


public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(200, 200);
f.setLocationRelativeTo(null);
final JTextField texte = new JTextField();
texte.addKeyListener(new  KeyListener() {

public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub

}

public void keyReleased(KeyEvent arg0) {
if(arg0.getKeyCode()!=KeyEvent.VK_SPACE){
StringTokenizer st = new StringTokenizer(texte.getText());
StringBuilder sb = new StringBuilder();
while(st.hasMoreTokens()){
String s = st.nextToken();
if(s.length()>0){
sb.append((""+s.charAt(0)).toUpperCase());
if(s.length()>1){
sb.append(s.substring(1, s.length()).toLowerCase());
}
}
if(st.hasMoreTokens()){
sb.append(" ");
}

}

texte.setText(sb.toString());
}

}

public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub

}
});
f.add(texte);
f.setVisible(true);
}

}

1
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 déc. 2011 à 16:19
Notes que pour ce genre de problème, tu ne peux pas utiliser les JFormatedTextField qui ne permettent pas de variabiliser la taille des champs que tu entres.
0
Rejoignez-nous