[JTextfiled] creation de filtre
bonjour,
j'ai lu plusieurs documentations à ce sujet la et j'ai trouvé un exemple qui permettait de se restreinde a la saisie de nombre.
je l'ai modifié afin de limiter le nombre à saisir par sa taille ce qui marche ainsi que l'émission d'un bip de signalement et la j'essais actuellement de rajouter un 2eme prarametre afin de fixer une valeur maximale
j'arrive à recuperer la taille du champ saisie dans le jtextfiled mais pas son contenure pour faire la comparaison
voici mon code:
Code:
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
|
import java.awt.Toolkit;
/****
* Classe DDocumentNumber : permet de personnaliser la gestion du "model" des composants Texte
* proposee dans l'api de swing
*
****/
import javax.swing.text.*;
import javax.swing.text.DefaultEditorKit.BeepAction;
import javax.swing.*;
import java.awt.BorderLayout;
public class Filtre extends PlainDocument
{
private int longeur;
private String nombre;
private int valeur;
private int max;
public Filtre(int taille,int max)
{
super ();
this.longeur = taille;
this.max = max;
}
/**
* Redefini la methode de la classe PlainDocument permettant ainsi d'autoriser
* uniquement les caracteres desires
*/
public void insertString (int offs, String str, AttributeSet a) throws BadLocationException
{
StringBuffer sb = new StringBuffer ();
char car;
nombre="";
if(offs<longeur)
{
for (int i=0; i<str.length(); i++)
{
car = str.charAt(i);
if (Character.isDigit (car))
{
sb.append(car);
System.out.println("str : "+str);
}
else
{
Toolkit.getDefaultToolkit().beep();
System.out.println("la caractere saisie n'est pas un chiffre");
}
}
super.insertString(offs, sb.toString(), a);
System.out.println("sb : "+ sb);
System.out.println("this.getLength() : "+ this.getLength());
}
else
Toolkit.getDefaultToolkit().beep();
}
} |