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

Soyez le premier à donner votre avis sur cette source.

Vue 18 735 fois - Téléchargée 1 273 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
minosubb Messages postés 31 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 24 septembre 2020
25 mai 2008 à 02:27
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
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
9 avril 2004 à 17:59
euu vi y a qd meme plus simple ;o)

faut use :
MaskFormatter
et
JFormattedTextField
cs_tds Messages postés 351 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
10 mars 2004 à 12:30
euh oui, c'est chouette.

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.