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

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

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.