[SWING] : Comment limiter un JTextField à 25 lettres capitales ?

Le
Foub31400
Bonjour,

je souhaite limiter un champ de saisies à 25 lettres en capitale, avec
le premier caractère obligatoire.
J'ai essayé d'utiliser un JFormattedTextField avec un
MaskFormatter("UUUUUUUUUUUUUUUUUUUUUUUUU") mais si j'écris moins de 25
lettres, soit il m'efface la donnée saisie, soit si je décide de
modifier le comportement par défaut et de commiter, il me complète
avec des blancs

Sinon, j'ai trouvé le code suivant pour limiter un JTextField à un
certain nombre de caractères : « [CODE]
class JTextField2 extends JTextField {
private int maxLength;

JTextField2(String text, int columns) {
super(text, columns);
maxLength = columns;
if (maxLength <= 0) maxLength = -1;
addFocusListener(this);
}

protected Document createDefaultModel() {
return new PlainDocument2();
}

class PlainDocument2 extends PlainDocument {
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (str == null) return;
if (maxLength == -1 || getLength() + str.length() <= maxLength) {
super.insertString(offset, str, attr);
}
}
}
}
[/CODE] », mais je ne peux pas m'assurer que l'utilisateur ne saisit
que des lettres en capitale.

Comprenez-vous mon problème ?
Comment puis-je faire ?
Avez-vous une idée ?

Merci beaucoup,
F.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Real Gagnon
Le #227367
Avez-vous une idée ?


Essayez http://www.rgagnon.com/javadetails/java-0198.html

il suffit de "setter" le flag toUppercase à true pour la conversion en
majuscule.

Bye.
--
Real Gagnon from Quebec, Canada
* Java, Javascript, VBScript or PowerBuilder snippets
* http://www.rgagnon.com/howto.html
* http://www.rgagnon.com/bigindex.html

TestMan
Le #227361
Bonjour,

je souhaite limiter un champ de saisies à 25 lettres en capitale, avec
le premier caractère obligatoire.

Comprenez-vous mon problème ?
Comment puis-je faire ?
Avez-vous une idée ?


Bonsoir,

En premier, commencer par RegexFormatter sur ...
http://java.sun.com/products/jfc/tsc/articles/reftf/
... et mettre la bonne expression dessus.

Par exemple, Si tu veux de 1 à 25 majuscules de A..Z :

p{Upper}{1,25}

Mais si tu autorises mes accents et autres signes diacritiques :

p{Lu}{1,25}

Avantage, tu pourras adapter expressions en fonction de tes besoins ;-)

A+
TM

Publicité
Poster une réponse
Anonyme