Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question/** * Cette classe se propose de contrôler la saisie d'un champ JTextField * qui utiliserait ce document. * Ainsi, * - on limite le nombre de caractères saisissables dans le champ * - seuls les caractères alphabétiques (lettres) sont autorisés auquel on ajoute les * caractères présents dans la liste listeCaracteresAutorisees et auquel on retranche * ceux issues de la liste listeCaracteresInterdits. */ public class PlainDocumentLettresEnMajuscules extends PlainDocument { private static final long serialVersionUID = 0L; private int maxlength; private Set<Character> listeCaracteresAutorisees; private Set<Character> listeCaracteresInterdits; /** * Constructeur de la classe PlainDocumentLettresEnMajuscules permettant de controler la saisie * dans un champ texte. * @param maxlength nombre maximal de caractères pour ce champ ; mettre 0 pour une saisie illimitée. * @param listeCaracteresAutorisees : liste de caractères autorisés en plus des caractères alphabétiques (lettres). * @param listeCaracteresInterdits : liste de caractères interdits, en plus de ceux qui ne sont pas des caractères alphabétiques. */ public PlainDocumentLettresEnMajuscules(int maxlength, Set<Character> listeCaracteresAutorisees, Set<Character> listeCaracteresInterdits) { if (maxlength < 0) { throw new IllegalArgumentException("La nombre maximal de caractères autorisé pour ce champ ne peut-être une valeur négative."); } else { this.maxlength = maxlength; } if (listeCaracteresAutorisees == null) { this.listeCaracteresAutorisees = new HashSet<Character>(); } else { this.listeCaracteresAutorisees = listeCaracteresAutorisees; } if (listeCaracteresInterdits == null) { this.listeCaracteresInterdits = new HashSet<Character>(); } else { this.listeCaracteresInterdits = listeCaracteresInterdits; } } /** * Action à effectuer lors de l'ajout d'un caractère dans le champ de saisie. */ public void insertString(int off, String s, AttributeSet a) throws BadLocationException { int nbCaracterePresentActuellementDansLeChamp = this.getLength(); // Si on a atteint la limite, on quitte... if ((s null)||((nbCaracterePresentActuellementDansLeChamp maxlength) && (maxlength > 0)) ) { // aucun caractère ne sera ajouté dans le champ // on émet un petit bruit pour signaler que l'on a atteint la limite // du nombre de caractères. Toolkit.getDefaultToolkit().beep(); return; } else { // On détecte la chaîne à ajouter StringBuffer str = new StringBuffer(); boolean isLettre; int i 0, nb s.length(); for (; i < nb; i++) { Character c = s.charAt(i); isLettre = Character.isLetter(c); // Si le caractère est une lettre et qu'il ne fait pas partie des caractères // interdits, on l'ajoute à la chaîne. if ((isLettre) && (!listeCaracteresInterdits.contains(c))) { str.append( new String(c + "").toUpperCase() ); } else if ((isLettre == false) && ( (listeCaracteresAutorisees.contains(c)) )) { str.append( new String(c + "") ); } } if (str.toString().equals("")) { return; } else if ((maxlength == 0)||((nbCaracterePresentActuellementDansLeChamp + str.length()) <= maxlength)) { super.insertString(off, str.toString(), a); } else { // Emission d'un bruit car on a atteint la limite du nombre de caractères autorisés. Toolkit.getDefaultToolkit().beep(); // on doit couper la chaîne à insérer car on dépasserait le nombre de caractères autorisés. super.insertString(off, str.substring(0, (maxlength - nbCaracterePresentActuellementDansLeChamp) ), a); } } } }
/** * Ce composant propose la saisie de caractères alphabétiques (lettres) * en capitale. */ public class JTextFieldForceLettresEnCapitale extends JTextField { private static final long serialVersionUID = 0L; private static int TAILLE_PAR_DEFAUT = 20; private Set<Character> listeCaracteresAutorisees = new HashSet<Character>(); private Set<Character> listeCaracteresInterdits = new HashSet<Character>(); /** * Constructeur de la classe JTextFieldForceLettresEnCapitale qui permet de spécifier le nombre * maximal de caractères autorisés pour ce champ. * @param maxLength nombre maximal de caractères autorisés pour ce champ ; mettre 0 pour une saisie illimité. */ public JTextFieldForceLettresEnCapitale(int maxLength) { super(); this.setDocument(new PlainDocumentLettresEnMajuscules(maxLength, listeCaracteresAutorisees, listeCaracteresInterdits)); } /** * Constructeur de la classe JTextFieldForceLettresEnCapitale. * Le nombre maximal de caractères autorisés pour ce champ est définit par défaut à 20. * La chaîne de caractères passé en paramètre valorisera le champ à condition que cette dernière * respecte les caractères autorisés. * @param text Chaîne valorisant le champ. */ public JTextFieldForceLettresEnCapitale(String text) { super(); this.setDocument(new PlainDocumentLettresEnMajuscules(JTextFieldForceLettresEnCapitale.TAILLE_PAR_DEFAUT, listeCaracteresAutorisees, listeCaracteresInterdits)); this.setText(text); } /** * Constructeur de la classe JTextFieldForceLettresEnCapitale qui permet de définir un nombre maximal * de caractères autorisés pour ce champ ainsi que la chaîne de caractères permettant de le prévaloriser. * @param maxLength nombre maximal de caractères autorisés pour ce champ ; mettre 0 pour une saisie illimité. * @param text chaîne de caractères prévalorisant le champ. */ public JTextFieldForceLettresEnCapitale(int maxLength, String text) { super(); this.setDocument(new PlainDocumentLettresEnMajuscules(maxLength, listeCaracteresAutorisees, listeCaracteresInterdits)); this.setText(text); } /** * Ajoute un caractère normallement interdit à la liste des caractères autorisés. * @param c caractère à ajouter à cette liste. */ public void ajouterCaractereAutorise(char c) { listeCaracteresAutorisees.add(c); } /** * Retire un caractère normallement interdit à la liste des caractères autorisés. * @param c caractère à enlever de cette liste. */ public void enleverCaractereAutorise(char c) { listeCaracteresAutorisees.remove(c); } /** * On efface les caractères présents dans la liste * des caractères autorisés. */ public void clearListeCaracteresAutorises() { listeCaracteresAutorisees.clear(); } /** * Ajoute un caractère normallement autorisé à la liste des caractères interdits. * @param c caractère à ajouter à cette liste. */ public void ajouterCaractereInterdit(char c) { listeCaracteresInterdits.add(c); } /** * Retire un caractère normallement autorisé à la liste des caractères interdits. * @param c caractère à enlever de cette liste. */ public void enleverCaractereInterdit(char c) { listeCaracteresInterdits.remove(c); } /** * On efface les caractères présents dans la liste * des caractères interdits. */ public void clearListeCaracteresInterdits() { listeCaracteresInterdits.clear(); } }