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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JTextField;
public class caracEvt implements KeyListener{
//Attributs
private fenAccueil parent;
private int posFocus;//Pour récupérer la position du focus
private String monChamp;
private int tailleChamp;
private char[] tabCarac;//Tableau qui stockera les caractères valides du champ
private char leCarac;//Pour récupérer un caractère dans la chaîne
//Constructeur
public caracEvt(fenAccueil fenSommaire){
parent = fenSommaire;
}
//Méthodes
/*
* Création de méthode privée à cet objet pour formater les champs (taille max, majuscules, ...)
*/
private void formatNom(JTextField unChamp){
int i, iTab;
boolean nllePos;//Pour savoir si un repositionnement du focus a défà été effectué (cas carac. invalide)
//Récupérer les infos du champ
posFocus = unChamp.getCaretPosition();
posFocus = posFocus>50?50:posFocus;
monChamp = unChamp.getText();
tailleChamp = unChamp.getText().length();
//Instanciation du tableau des caractères valides
tabCarac = new char[tailleChamp];
//Initialisation du compteur indice du tableau
iTab = 0;
//Initialisation de la nouvelle position du focus
nllePos = false;
//Parcourir l'ensemble des caractères du champ
for (i=0;i<tailleChamp;i++){
//Récupérer le caractère
leCarac = (char)(monChamp.substring(i, i+1).hashCode());
//Vérifier que le caractère est un caractère valide
if (leCarac>='A' && leCarac<='Z' || leCarac>='a' && leCarac<='z' || leCarac=='-'){
//Sauvegarder les caractères valides
tabCarac[iTab] = leCarac;
//Incrémenter l'indice du tableau
iTab++;
}
else if (nllePos==false){//Le caractère est invalide
//Mémoriser le nouvel endroit de positionnement du focus
posFocus = iTab;
nllePos = true;
}
}
//Ré-initialiser la valeur du champ
monChamp = "";
//Parcourir l'ensemble des caractères valides
for (i=0;i<iTab;i++){
//Recomposer le champ avec les caractères valides
monChamp += tabCarac[i];
}
//Limiter la chaîne à un certain nombre de caractères
monChamp = monChamp.length()>50?monChamp.substring(0, 50):monChamp;
//Remplacer la valeur actuelle du champ de saisie par les caractères valides
unChamp.setText(monChamp);
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e){
/*
* Cette méhode enregistre le caractère dans "e" lorsqu'une touche est enfoncée
* (si elle reste enfoncée, elle est enregistrée plusieurs fois)
*/
}
public void keyReleased(KeyEvent e) {
/*
* Cette méthode enregistre le caractère dans "e" lorsqu'une touche est relachée
*/
//Champ NOM
if (e.getSource()==parent.getTxtNomMbre()){
//Formater le champ nom
formatNom(parent.getTxtNomMbre());
//Mettre le champ en majuscules
parent.getTxtNomMbre().setText(parent.getTxtNomMbre().getText().toUpperCase());
//Repositionner le curseur au bon endroit
parent.getTxtNomMbre().setCaretPosition(posFocus);
}
}
} |