Jtextfield n'acceptant que des entiers, chaînes .....

Soyez le premier à donner votre avis sur cette source.

Vue 17 398 fois - Téléchargée 1 188 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_tds
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004
-
euh oui, c'est chouette.
cs_GodConan
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
9 -
euu vi y a qd meme plus simple ;o)

faut use :
MaskFormatter
et
JFormattedTextField
minosubb
Messages postés
30
Date d'inscription
jeudi 24 avril 2008
Statut
Membre
Dernière intervention
13 juillet 2017
-
Je trouve ton code intéressant. Déjà il me retire une épine du pied.
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

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.