Voici quelques classes qui permet d'avoir des JTextField nous permettant de n'avoir que des chaines, que des entiers, que des réels, qui met automatiquement des caractéres en majuscule ou en minuscule, ou encore qui permet de ne mettre qu'un certain nombre de caractéres ...
Ci-dessous le cas du JIntegerField avec la classe IntegerCaseDocument
Source / Exemple :
package myfield;
/**
- <p>Titre : JIntegerField</p>
- <p>Description : Champ ne contenant <u>que</u> des entiers (pas de chaines)</p>
- <p>Copyright : Copyright (c) 2003</p>
- <p>Société : perso</p>
- @author Indiana_jules
- @version 1.0
- /
//Importation des packages nécessaires
import javax.swing.JTextField;
import javax.swing.text.*;
import myfield.restriction.IntegerCaseDocument;
public class JIntegerField extends JTextField{
/**Constructeur par défaut*/
public JIntegerField() {
super();
}
/**Méthode permettant d'indiquer quel type de modéle nous souhaitons*/
protected Document createDefaultModel() {
return new IntegerCaseDocument();
}
/**Méthode retournant l'entier*/
public int getInt() {
try{
return Integer.parseInt(super.getText().trim()); //éliminer les blancs en début et fin de chaine
}
catch(Exception e){
return 0;
}
}
/**Méthode affectant l'entier*/
public void setInt(int entier) {
super.setText(""+entier);
}
}
package myfield.restriction;
/**
- <p>Titre : IntegerCaseDocument</p>
- <p>Description : Classe faisant en sorte qu'on ait que des entiers</p>
- <p>Copyright : Copyright (c) 2003</p>
- <p>Société : perso</p>
- @author Indiana_jules
- @version 1.0
- /
//Importation des packages nécessaires
import javax.swing.text.*;
public class IntegerCaseDocument extends PlainDocument{
/**Méthode appelé lorsqu'on veut insérer un élément dans un JTextField*/
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] upper = str.toCharArray();
String tempo = "";
for (int i = 0; i < upper.length; i++) {
switch(upper[i]){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
tempo = tempo + upper[i];
break;
default:
tempo = tempo + "";
}
}
super.insertString(offs, tempo, a);
}
}
Conclusion :
La classe IntegerCaseDocument permet en fait de formater comme nous souhaitons les données qui sont envoyés au JTextField. Du coup, nous pouvons filtrer ce que nous ne désirons pas
25 mai 2008 à 02:27
Je vais pouvoir étudier ça. car en fait, si j'ai bien compris ta démarche, c'est de redéfinir les JTextField utilisés.
Merci
9 avril 2004 à 17:59
faut use :
MaskFormatter
et
JFormattedTextField
10 mars 2004 à 12:30
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.