[SWING] : Comment limiter un JTextField à 25 lettres capitales ?
2 réponses
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 ?