Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
Foub31400
Bonjour,

je souhaite limiter un champ de saisies =E0 25 lettres en capitale, avec
le premier caract=E8re obligatoire.
J'ai essay=E9 d'utiliser un JFormattedTextField avec un
MaskFormatter("UUUUUUUUUUUUUUUUUUUUUUUUU") mais si j'=E9cris moins de 25
lettres, soit il m'efface la donn=E9e saisie, soit si je d=E9cide de
modifier le comportement par d=E9faut et de commiter, il me compl=E8te
avec des blancs...

Sinon, j'ai trouv=E9 le code suivant pour limiter un JTextField =E0 un
certain nombre de caract=E8res : =AB [CODE]
class JTextField2 extends JTextField {
private int maxLength;

JTextField2(String text, int columns) {
super(text, columns);
maxLength =3D columns;
if (maxLength <=3D 0) maxLength =3D -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 =3D=3D null) return;
if (maxLength =3D=3D -1 || getLength() + str.length() <=3D maxLength) {
super.insertString(offset, str, attr);
}
}
}
}
[/CODE] =BB, mais je ne peux pas m'assurer que l'utilisateur ne saisit
que des lettres en capitale.

Comprenez-vous mon probl=E8me ?
Comment puis-je faire ?
Avez-vous une id=E9e ?

Merci beaucoup,
F=2E

2 réponses

Avatar
Real Gagnon
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

Avatar
TestMan
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