Mise en majuscule des premieres lettres d'un JTextField

Signaler
Messages postés
75
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
5 juillet 2014
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
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

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
312
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);
}

}

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
312
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.