Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1287 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java] Comment faire pour qu'un JTextField contienne que des chiffres?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] Comment faire pour qu'un JTextField contienne que des chiffres?

n°670008
sbucci2
Posté le 10-03-2004 à 19:02:11  profilanswer
 

Tout est dans le titre!
merci

mood
Publicité
Posté le 10-03-2004 à 19:02:11  profilanswer
 

n°670010
jagstang
Pa Capona ಠ_ಠ
Posté le 10-03-2004 à 19:04:57  profilanswer
 

je connais rien en java. mais j'imagine que tu as un event lorsque l'on modifie le textfield. il suffit alors de contrôler si c'est entre 0 et 9. sinon, remplacer le texte par char(0)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°670011
sbucci2
Posté le 10-03-2004 à 19:06:15  profilanswer
 

je prend note,
pas d autre propositions ?

n°670015
benou
Posté le 10-03-2004 à 19:12:34  profilanswer
 

en jdk 1.4 visiblement y a JformattedTextField qui permet de faire ca, sinon ca se code mais pas comme dit JagStang ...
 
je me souviens qu'il y a longtemps on avait parlé de ca sur ce forum ... je vais faire une recherche


Message édité par benou le 10-03-2004 à 19:12:58

---------------
ma vie, mon oeuvre - HomePlayer
n°670022
sbucci2
Posté le 10-03-2004 à 19:19:01  profilanswer
 
n°670024
kadreg
profil: Utilisateur
Posté le 10-03-2004 à 19:20:32  profilanswer
 


 
Je conseille  la solution 2 :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°670028
benou
Posté le 10-03-2004 à 19:26:38  profilanswer
 

j'ai pas retrouvé le topic.
 
voilà un truc que j'avais fait pour un textfield pour float. Faut simplifier le code pour gérer que les entiers :
 

Code :
  1. package convertisseur;
  2. import javax.swing.*;
  3. import javax.swing.text.*;
  4. import java.awt.Toolkit;
  5. import java.text.ParsePosition;
  6. import java.text.NumberFormat;
  7. import java.text.DecimalFormat;
  8. import java.text.ParseException;
  9. import java.util.Locale;
  10. /**
  11.    Attention : cette fonction n'accepte la saisie que de chiffres et du séparateur de  
  12.    décimal. Pour faire ca bien, il faudrait aussi accepter les autres caractères qui peuvent  
  13.    composer un float : le signe negatif, le séparateur de groupe, l'expossant, etc ...  
  14.    Mais il ne faut accepter la saisie de ces caractères que si leur emplacement est correct, ce qui rend
  15.    le travail un peu plus difficile. Si quelqu'un a le courage de faire ca, merci de me l'envoyer
  16. */
  17. public class JFloatField extends JTextField {
  18.    private Toolkit toolkit;
  19.    private DecimalFormat decimalFormatter;
  20.    private char decimalSeparator;
  21.    private void init() {
  22.       toolkit = Toolkit.getDefaultToolkit();
  23.       setDecimalFormat( new DecimalFormat("#0.00" ));
  24.    }
  25.    public JFloatField() {
  26.       super();
  27.       init();
  28.    }
  29.    public JFloatField(int columns) {
  30.       super(columns);
  31.       init();
  32.    }
  33.    public void setDecimalFormat(DecimalFormat formatter) {
  34.       decimalFormatter = formatter;
  35.       decimalSeparator = decimalFormatter.getDecimalFormatSymbols().getDecimalSeparator();     
  36.    }
  37.    public float getValue() {
  38.       if (getText().equals("" )) {
  39.          return 0;
  40.       }
  41.       try {
  42.          return decimalFormatter.parse(getText()).floatValue();
  43.       } catch (ParseException e) {
  44.          // ne devrait jamais arriver
  45.          toolkit.beep();
  46.          return 0;
  47.       }
  48.    }
  49.    public void setValue(float value) {
  50.       setText(decimalFormatter.format(value));
  51.    }
  52.    public void format() {
  53.       setValue(getValue());
  54.    }
  55.    protected Document createDefaultModel() {
  56.       return new JFloatFieldDocument();
  57.    }
  58.    protected class JFloatFieldDocument extends PlainDocument {
  59.       protected boolean comma=false;
  60.       public void insertString(int offs, String str, AttributeSet a)
  61.          throws BadLocationException {
  62.  char[] source = str.toCharArray();
  63.          char[] result = new char[source.length];
  64.          int j = 0;
  65.          char c;
  66.          for (int i = 0; i < result.length; i++) {
  67.             c = source[i];
  68.             if (c == '.') {
  69.                c = decimalSeparator;
  70.             }             
  71.             if (Character.isDigit(c))
  72.                result[j++] = c;
  73.             else if (c == decimalSeparator) {
  74.                if (! comma) {
  75.                   comma = true;
  76.                   result[j++] = c;
  77.                } else {
  78.                   toolkit.beep();
  79.                }
  80.             } else {
  81.                toolkit.beep();
  82.             }
  83.          }
  84.  super.insertString(offs, new String(result, 0, j), a);
  85.       }
  86.       public void remove(int offs, int len) throws BadLocationException {
  87.          String removedText = getText(offs, len);
  88.          if (removedText.indexOf(decimalSeparator) != -1) {
  89.             comma = false;
  90.          }
  91.  super.remove(offs, len);
  92.       }       
  93.    }
  94. }


 
mais visiblement en jdk1.4 ca a bcp changé : y a moyen de faire bcp plus simple


Message édité par benou le 10-03-2004 à 19:27:47

---------------
ma vie, mon oeuvre - HomePlayer
n°670029
benou
Posté le 10-03-2004 à 19:27:15  profilanswer
 

kadreg a écrit :


Je conseille  la solution 2 :o


la 3 est sympa :)


---------------
ma vie, mon oeuvre - HomePlayer
n°670035
sbucci2
Posté le 10-03-2004 à 19:31:42  profilanswer
 

j ai fe ca :
le probleme c'est que une fois le curseur à l interieur, je ne peux pas effacer le premier caractere tape, c plutot embetant
 

Citation :


 private JFormattedTextField jTextFieldScore1 ;
    NumberFormat nf = NumberFormat.getNumberInstance ();
    nf.setParseIntegerOnly (true);
    jTextFieldScore1 = new JFormattedTextField(nf);
((DefaultFormatter) jTextFieldScore1.getFormatter ()).setAllowsInvalid (false);

n°670041
sbucci2
Posté le 10-03-2004 à 19:36:44  profilanswer
 

j ai rien dit, en faite c le 0 qui veut po

mood
Publicité
Posté le 10-03-2004 à 19:36:44  profilanswer
 

n°670593
sbucci2
Posté le 11-03-2004 à 11:01:42  profilanswer
 

n oubliez pas cette ligne sinon vous aller galerer comme moi si vous voulez mettre à jour le champ:
    ((DefaultFormatter) jTextFieldScore2.getFormatter ()).setOverwriteMode(true)     ;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java] Comment faire pour qu'un JTextField contienne que des chiffres?

 

Sujets relatifs
[java] thread et sleep en nsPont Java - ActiveX
[JAVA - JAVASCRIPT] Ouvrir la Sun Java Console [Résolu]Regex et Java
[java]Transferer un fichier quelconque d'un client a un serveur ?Programmation Orientée Composants en java
[JAVA][AWT] Bug avec TextArea sous windows ?[Java] Polymorphisme : besoin d'explications
[java]Comment savoir quel jRadioBouton est coché dans un ButtonGroup ?Recuperer applet java help
Plus de sujets relatifs à : [java] Comment faire pour qu'un JTextField contienne que des chiffres?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR