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

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Limiter un JTextField a la saisie d'un numérique? [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Limiter un JTextField a la saisie d'un numérique? [Résolu]

n°144186
zizou
Posté le 24-05-2002 à 16:54:04  profilanswer
 

Voila tout est dans le titre. Il y a pas une classe toute faite?
 
Ou bien il faut utiliser JFormattedTextField? Mais j'ai pas envie de faire des lignes de code que des dizaines de personnes ont du le faire déja. Alors si c'est le seul moyen, qq pourrait-il me passer un exemple de code faisant ca? Ou bien me donner une url m'indiquant ou je peux trouver ce genre de problème classique illustré par du code.
 
Merci

 

[jfdsdjhfuetppo]--Message édité par Zizou le 29-05-2002 à 10:03:56--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 24-05-2002 à 16:54:04  profilanswer
 

n°144191
Profil sup​primé
Posté le 24-05-2002 à 16:58:14  answer
 

je crois pas que ca existe mais c'est très facile a faire.
 
voila la fonction en javascript, je l'avai fait en java a l'époque mais je l'aii plus sous la main (mais c'est très semblable, tu aura pas de mal a adapter).
 

Code :
  1. function checkint(champ)
  2. {
  3. var c=champ.value.charAt(champ.value.length-1);
  4. if (c!='0' && c!='1' && c!='2' && c!='3' && c!='4' && c!='5' && c!='6' && c!='7' && c!='8' && c!='9')
  5.  champ.value=champ.value.substring(0,champ.value.length-1);
  6. }


 
tu met un listener sur ton textfield, et quand il est modifié tu appelle une focntion style celle plus haut.

n°144198
zizou
Posté le 24-05-2002 à 17:11:37  profilanswer
 

mr_mat a écrit a écrit :

je crois pas que ca existe mais c'est très facile a faire.
 
voila la fonction en javascript, je l'avai fait en java a l'époque mais je l'aii plus sous la main (mais c'est très semblable, tu aura pas de mal a adapter).
 

Code :
  1. function checkint(champ)
  2. {
  3. var c=champ.value.charAt(champ.value.length-1);
  4. if (c!='0' && c!='1' && c!='2' && c!='3' && c!='4' && c!='5' && c!='6' && c!='7' && c!='8' && c!='9')
  5.  champ.value=champ.value.substring(0,champ.value.length-1);
  6. }


 
tu met un listener sur ton textfield, et quand il est modifié tu appelle une focntion style celle plus haut.  




 
pas bete comme méthode, merci, ca m'a l'air plus simple que la méthode du JFormattedTextField

n°144200
Profil sup​primé
Posté le 24-05-2002 à 17:15:00  answer
 

a la place des && bourrins tu peut simplement mettre if (c<'0' || c>'9';) (où la variable c est de type char)

 

[jfdsdjhfuetppo]--Message édité par mr_mat le 24-05-2002 à 17:15:23--[/jfdsdjhfuetppo]

n°144254
zizou
Posté le 24-05-2002 à 18:39:43  profilanswer
 

mr_mat a écrit a écrit :

a la place des && bourrins tu peut simplement mettre if (c<'0' || c>'9';) (où la variable c est de type char)  
 
 




 
en fait ca marche pas si bien que ca : si on tappes lentement, il y a aucun problème, par contre si tu maintiens une touche non autorisée enfoncée (m par exemple) ils ne sont pas tous eliminés :(
 
Personne n'a deja essayé de coder ca avec un JFormattedTextField??

n°144318
zizou
Posté le 24-05-2002 à 20:42:10  profilanswer
 

up

n°144381
Profil sup​primé
Posté le 24-05-2002 à 22:34:48  answer
 

Zizou a écrit a écrit :

 
 
en fait ca marche pas si bien que ca : si on tappes lentement, il y a aucun problème, par contre si tu maintiens une touche non autorisée enfoncée (m par exemple) ils ne sont pas tous eliminés :(
 
Personne n'a deja essayé de coder ca avec un JFormattedTextField??  



a mon avis tu intercepte keytyped.
en fait il faut intercepter keyup et keydown.

n°144529
benou
Posté le 25-05-2002 à 12:08:13  profilanswer
 

une façon de faire c'est que à chaque fois,  tu vires tous les caractères qui ne sont pas des chiffres. Comme ca, même si un évenement n'est pas intercepté, la lettre sera effacé par l'évenement d'après.
 
comment ca c'est du bidouillage ???? :D

n°144557
R3g
fonctionnaire certifié ITIL
Posté le 25-05-2002 à 13:37:13  profilanswer
 

Il y a une methode tres sympa decrite dans le tutorial swing de Sun. En fait tu construit ton JTextField avec un objet heritant de PlainDocument (c'est le classe utlkisée par defaut), dans lequel tu redefini la methode qui insere les chaines de caracteres, pour n'accepter que les chiffres.
 
Desole c'est pas clair mais ca fait longtremps que j'ai pas fait de Java. Va voir sur le tutorial Sun, c'est explique tres clairement.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°145796
benou
Posté le 28-05-2002 à 00:27:24  profilanswer
 

voici la page en question :  
http://java.sun.com/docs/books/tut [...] field.html
 
avec la classe qui implémente ce mécanisme :
http://java.sun.com/docs/books/tut [...] Field.java


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le 28-05-2002 à 00:27:24  profilanswer
 

n°146258
Wons
Ga Bu Zo Me
Posté le 28-05-2002 à 16:09:11  profilanswer
 

euh avec un JFormattedTextField(#########), ça fonctionne tout seul.
En gros, ça fait comme un JTextField, avec DefaultStyledDocument, et un test sur Character.isDigit() lors de la saisie
 
Edit : un ch'ti lien :
http://java.sun.com/j2se/1.4/docs/ [...] 4/ftf.html

 

[jfdsdjhfuetppo]--Message édité par Wons le 28-05-2002 à 16:10:14--[/jfdsdjhfuetppo]

n°146269
benou
Posté le 28-05-2002 à 16:26:17  profilanswer
 

merci pour l'info, mais ca c'est uniquement jdk1.4 on dirait ...


---------------
ma vie, mon oeuvre - HomePlayer
n°146289
Wons
Ga Bu Zo Me
Posté le 28-05-2002 à 16:44:28  profilanswer
 

benou a écrit a écrit :

merci pour l'info, mais ca c'est uniquement jdk1.4 on dirait ...


Euh bah oui.
Si c'est du java 1.3, faut passer par un StyledDocument
 
Un peu comme ça :  
public class toto {
  toto() {
    DSD styledDoc = new DSD();
    this.setDocument(styledDoc);
  }
}
class DSD extends DefaultStyledDocument {
  DSD() {}
 
  public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
    for (int i=0; i<str.length(); i++) {
      if (Character.isDigit(str.charAt(i)))
        super.insertString(offs+i, str.charAt(i), a);
    }
  }
}
 
Avec un truc comme ça, il accepte tout les chiffres. Il accepte aussi les copier-coller, mais il ne prendra que les chiffres dans le texte à coller.
Je suis pas sûr du truc, mais ça doit ressembler à un truc comme ça.

n°146340
benou
Posté le 28-05-2002 à 17:57:21  profilanswer
 

ouais c'est ca ... y a le code dans un des liens que j'ai filé ..


---------------
ma vie, mon oeuvre - HomePlayer
n°146714
zizou
Posté le 29-05-2002 à 10:02:23  profilanswer
 

Voila une méthode basé sur les listeners, c'est peut etre pas la plus belle mais elle a le mérite de fonctionner :  
 
import java.awt.event.*;
 
public class NumericField extends javax.swing.JTextField {
     
    private javax.swing.JTextField jf;
     
    public NumericField() {
         
        super();
        this.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                onlyNumeric(NumericField.this);
            }
            public void keyTyped(KeyEvent e) {
                onlyNumeric(NumericField.this);
            }
             
            private void onlyNumeric(NumericField np) {
                String s = np.getText();
                if (!(s.length()==0)) {
                    char c = s.charAt(s.length()-1);
                    // on elimine tous les caractères non numérique, et également le point s'il y en  
                    //a deja un.
                    if ((c<'0' || c>'9';) && (c!='.';) ||
                    ((c=='.';) && (s.substring(0,s.length()-1).indexOf('.';)!= -1)  )) {
                        np.setText(s.substring(0,s.length()-1));
                    }
                }
            }
        });
    }
}

 
Merci à tous ceux qui m'ont permis de résoudre mon problème.

n°147477
benou
Posté le 30-05-2002 à 01:30:08  profilanswer
 

si jamais ca peut intéresser quelqu'un, j'ai développé un TextField qui permet de ne saisir que des Float. Ca marche bien et c'est pratique à utiliser.
 
ca s'utilise comme ca :  

Code :
  1. float f = (float) 12.34;
  2.       tf_float = new JFloatField();
  3.       tf_float.setValue(f);
  4.       ...
  5.       float toto = tf_float.getValue();
  6.       ...
  7.       tf_float.format(); // pour appliquer le formatage  
  8.       ...
  9.       tf_float.setDecimalFormat(new java.text.DecimalFormat("#0.0###" )); // change le mode de formatage


 
 
et voici le source de la classe. Elle est améliorable, mais bon ...

Code :
  1. import javax.swing.*;
  2. import javax.swing.text.*;
  3. import java.awt.Toolkit;
  4. import java.text.NumberFormat;
  5. import java.text.DecimalFormat;
  6. import java.text.ParseException;
  7. import java.util.Locale;
  8. /**
  9.    Attention : cette fonction n'accepte la saisie que de chiffres et du séparateur de  
  10.    décimal. Pour faire ca bien, il faudrait aussi accepter les autres caractères qui peuvent  
  11.    composer un float : le signe negatif, le séparateur de groupe, l'expossant, etc ...  
  12.    Mais il ne faut accepter la saisie de ces caractères que si leur emplacement est correct, ce qui rend
  13.    le travail un peu plus difficile. Si quelqu'un a le courage de faire ca, merci de me l'envoyer :
  14.    benazech@ifrance.com
  15. */
  16. public class JFloatField extends JTextField {
  17.    private Toolkit toolkit;
  18.    private DecimalFormat decimalFormatter;
  19.    private char decimalSeparator;
  20.    private void init() {
  21.       toolkit = Toolkit.getDefaultToolkit();
  22.       setDecimalFormat( new DecimalFormat("#0.00" ));
  23.    }
  24.    public JFloatField() {
  25.       super();
  26.       init();
  27.    }
  28.    public JFloatField(int columns) {
  29.       super(columns);
  30.       init();
  31.    }
  32.    public void setDecimalFormat(DecimalFormat formatter) {
  33.       decimalFormatter = formatter;
  34.       decimalSeparator = decimalFormatter.getDecimalFormatSymbols().getDecimalSeparator();     
  35.    }
  36.    public float getValue() {
  37.       if (getText().equals("" )) {
  38.          return 0;
  39.       }
  40.       try {
  41.          return decimalFormatter.parse(getText()).floatValue();
  42.       } catch (ParseException e) {
  43.          // ne devrait jamais arriver
  44.          toolkit.beep();
  45.          return 0;
  46.       }
  47.    }
  48.    public void setValue(float value) {
  49.       setText(decimalFormatter.format(value));
  50.    }
  51.    public void format() {
  52.       setValue(getValue());
  53.    }
  54.    protected Document createDefaultModel() {
  55.       return new JFloatFieldDocument();
  56.    }
  57.    protected class JFloatFieldDocument extends PlainDocument {
  58.       protected boolean comma=false;
  59.       public void insertString(int offs, String str, AttributeSet a)
  60.          throws BadLocationException {
  61.          
  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. }

 

[jfdsdjhfuetppo]--Message édité par benou le 30-05-2002 à 01:33:45--[/jfdsdjhfuetppo]


---------------
ma vie, mon oeuvre - HomePlayer
n°149967
bobuse
Posté le 03-06-2002 à 14:38:46  profilanswer
 

Moi pareil, c'est pour saisir des entiers, il y a nu jtextfield, deux boutons pour augmenter/diminuer la valeur, et un troisième pour afficher un jslide pour ajuster la valeur, si il y en a d'interressés ... c'est pas encore la version finale, mais elle marche bien, et bien commentée (et pas trop longue) donc voilà :
 
dites-moi ce que vous en pensez  ;)  

Code :
  1. import javax.swing.*;
  2. import javax.swing.event.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. /**
  6. * <p>
  7. * Composant Swing permettant de saisir un entier de manire conviviale. Il comporte trois boutons, deux pour incrmenter et dcrmenter la valeur.
  8. * Et le troisime sert  afficher un curseur qui permet d'ajuster plus rapidement la valeur.
  9. * </p>
  10. * <p>
  11. * <b>Aperu :</b><br> <img src="../images/IntChooser1.png" align="top">  <img src="../images/IntChooser2.png" align="top">
  12. * </p>
  13. * <p>
  14. * <a href="../src/IntChooser.java">IntChooser.java</a> le code source.
  15. * </p>
  16. * <p>
  17. * <a href="../others/IntChooserDemo.java">IntChooserDemo.java</a> le code source du programme exemple.
  18. * </p>
  19. * <p>
  20. * @author Nicolas Dumoulin
  21. * </p>
  22. * <p>
  23. * @version 1.0
  24. * </p>
  25. */
  26. public class IntChooser extends JPanel implements ActionListener,MouseMotionListener {
  27.     private JDialog jdOwner;
  28.     private JFrame jfOwner;
  29.     private JTextField tf;
  30.     private int init;
  31.     private int min;
  32.     private int max;
  33.     private JDialog dslide;
  34.     private JTextField tfBis;
  35.     private JSlider slide;
  36.     /**
  37.      * <p>
  38.      * Construit un objet IntChooser qui servira  saisir un pourcentage.
  39.      * </p>
  40.      * <p>
  41.      * @param owner : fentre dans laquelle est dessin le composant.
  42.      * </p>
  43.      * <p>
  44.      * @param init : valeur initiale du champ de saisie. Ce paramtre doit tre un float compris entre 0 et 1,
  45.      * comme une probabilit, il sera ensuite converti en pourcentage (entre 0 et 100).
  46.      * </p>
  47.      */
  48.     public IntChooser(JFrame owner,float init) {
  49.         this(owner,(int)(init*100),0,100);
  50.     }
  51.     /**
  52.      * <p>
  53.      * Construit un objet IntChooser qui servira  saisir un pourcentage.
  54.      * </p>
  55.      * <p>
  56.      * @param owner : fentre dans laquelle est dessin le composant.
  57.      * </p>
  58.      * <p>
  59.      * @param init : valeur initiale du champ de saisie. Ce paramtre doit tre un float compris entre 0 et 1,
  60.      * comme une probabilit, il sera ensuite converti en pourcentage (entre 0 et 100).
  61.      * </p>
  62.      */
  63.     public IntChooser(JDialog owner,float init) {
  64.         this(owner,(int)(init*100),0,100);
  65.     }
  66.     /**
  67.      * <p>
  68.      * Construit un objet IntChooser qui servira  saisir un entier entre min et max.
  69.      * </p>
  70.      * <p>
  71.      * @param owner : fentre dans laquelle est dessin le composant.
  72.      * </p>
  73.      * <p>
  74.      * @param init : valeur initiale du champ de saisie.
  75.      * </p>
  76.      * <p>
  77.      * @param min : valeur minimale dsire.
  78.      * </p>
  79.      * <p>
  80.      * @param init : valeur maximale dsire.
  81.      * </p>
  82.      */
  83.     public IntChooser(JFrame owner,int init,int min,int max) {
  84.         this(init,min,max);
  85.         this.jfOwner=owner;
  86.         this.jdOwner=null;
  87.     }
  88.     /**
  89.      * <p>
  90.      * Construit un objet IntChooser qui servira  saisir un entier entre min et max.
  91.      * </p>
  92.      * <p>
  93.      * @param owner : fentre dans laquelle est dessin le composant.
  94.      * </p>
  95.      * <p>
  96.      * @param init : valeur initiale du champ de saisie.
  97.      * </p>
  98.      * <p>
  99.      * @param min : valeur minimale dsire.
  100.      * </p>
  101.      * <p>
  102.      * @param init : valeur maximale dsire.
  103.      * </p>
  104.      */
  105.     public IntChooser(JDialog owner,int init,int min,int max) {
  106.         this(init,min,max);
  107.         this.jdOwner=owner;
  108.         this.jfOwner=null;
  109.     }
  110.     /**
  111.      * <p>
  112.      * Construit un objet IntChooser qui servira  saisir un entier entre min et max.
  113.      * </p>
  114.      * <p>
  115.      * @param init : valeur initiale du champ de saisie.
  116.      * </p>
  117.      * <p>
  118.      * @param min : valeur minimale dsire.
  119.      * </p>
  120.      * <p>
  121.      * @param init : valeur maximale dsire.
  122.      * </p>
  123.      */
  124.     private IntChooser(int init,int min,int max) {
  125.         super();
  126.         GridBagLayout gb=new GridBagLayout();
  127.         this.setLayout(gb);
  128.         this.init=init;
  129.         this.min=min;
  130.         this.max=max;
  131.         GridBagConstraints gbc=new GridBagConstraints();
  132.         gbc.gridx=0;
  133.         gbc.gridy=0;
  134.         gbc.gridwidth=1;
  135.         gbc.gridheight=2;
  136.         gbc.insets=new Insets(0,0,0,0);
  137.         tf = new JTextField(String.valueOf(init),String.valueOf(max).length()+1);
  138.         tf.setHorizontalAlignment(JTextField.RIGHT);
  139.         tf.setInputVerifier(new IntVerifier());
  140.         gb.setConstraints(tf,gbc);
  141.         this.add(tf);
  142.         final JButton bup=new JButton("+" );
  143.         bup.setActionCommand("up" );
  144.         bup.addActionListener(this);
  145.         bup.setPreferredSize(new Dimension(15,10));
  146.         gbc.gridx=1;
  147.         gbc.gridy=0;
  148.         gbc.gridwidth=1;
  149.         gbc.gridheight=1;
  150.         gb.setConstraints(bup,gbc);
  151.         this.add(bup);
  152.         final JButton bdown=new JButton("-" );
  153.         bdown.setActionCommand("down" );
  154.         bdown.addActionListener(this);
  155.         bdown.setPreferredSize(new Dimension(15,10));
  156.         gbc.gridx=1;
  157.         gbc.gridy=1;
  158.         gb.setConstraints(bdown,gbc);
  159.         this.add(bdown);
  160.         final JButton badjust=new JButton("*" );
  161.         badjust.setActionCommand("adjust" );
  162.         badjust.addActionListener(this);
  163.         badjust.setPreferredSize(new Dimension(15,20));
  164.         gbc.gridx=2;
  165.         gbc.gridy=0;
  166.         gbc.gridheight=2;
  167.         gb.setConstraints(badjust,gbc);
  168.         this.add(badjust);
  169.         //slider
  170.         slide=new JSlider(JSlider.HORIZONTAL,this.min,this.max,this.init);
  171.         slide.addChangeListener(new SliderListener());
  172.         slide.setMajorTickSpacing((max-min)/2);
  173.         slide.setMinorTickSpacing((max-min)/10);
  174.         slide.setPaintTicks(true);
  175.         slide.setPaintLabels(true);
  176.         slide.setOpaque(true);
  177.         slide.setBackground(Color.WHITE);
  178.     }
  179.     /**
  180.      * <p>
  181.      * Rinitialise un IntChooser  la vole.
  182.      * </p>
  183.      * <p>
  184.      * @param init : valeur initiale du champ de saisie.
  185.      * </p>
  186.      * <p>
  187.      * @param min : valeur minimale dsire.
  188.      * </p>
  189.      * <p>
  190.      * @param init : valeur maximale dsire.
  191.      * </p>
  192.      */
  193.     public void init(int init,int min,int max) {
  194.         this.init=init;
  195.         this.min=min;
  196.         this.max=max;
  197.         tf.setText(String.valueOf(init));
  198.         tf.setColumns(String.valueOf(max).length()+1);
  199.     }
  200.     /**
  201.      * <p>
  202.      * Rcupre la valeur initiale du champ de saisie.
  203.      * </p>
  204.      * <p>
  205.      * @return valeur initiale du champ de saisie.
  206.      * </p>
  207.      */
  208.     public int getInitValue() {
  209.         return init;
  210.     }
  211.     /**
  212.      * <p>
  213.      * Rcupre la valeur courante du champ de saisie.
  214.      * </p>
  215.      * <p>
  216.      * @return valeur courante du champ de saisie.
  217.      * </p>
  218.      */
  219.     public int getValue() {
  220.         return (Integer.parseInt(tf.getText()));
  221.     }
  222.     /**
  223.      * <p>
  224.      * Gestionnaire d'vnement utiliser pour dtecter les pressions sur les boutons.
  225.      * </p>
  226.      * <p>
  227.      * @param e : vnement rcupr.
  228.      * </p>
  229.      */
  230.     public void actionPerformed(java.awt.event.ActionEvent e) {
  231.         if (e.getActionCommand().equals("up" )) {
  232.             if (Integer.parseInt(tf.getText())<max)
  233.                 tf.setText(String.valueOf(Integer.parseInt(tf.getText())+1));
  234.         } else if (e.getActionCommand().equals("down" )) {
  235.             if (Integer.parseInt(tf.getText())>min)
  236.                 tf.setText(String.valueOf(Integer.parseInt(tf.getText())-1));
  237.         } else if (e.getActionCommand().equals("adjust" )) {
  238.             slide.setValue(this.getValue());
  239.             if (jfOwner!=null) {
  240.                 dslide=new JDialog(jfOwner,true);
  241.             } else if (jdOwner!=null) {
  242.                 dslide=new JDialog(jdOwner,true);
  243.             } else return;
  244.             dslide.setUndecorated(true);
  245.             dslide.setName("slide" );
  246.             Point loctf = tf.getLocationOnScreen();
  247.             loctf.translate(-30,-20);
  248.             JPanel slidePane=new JPanel();
  249.             slidePane.setLayout(new BoxLayout(slidePane,BoxLayout.Y_AXIS));
  250.             tfBis=new JTextField(tf.getText());
  251.             tfBis.setHorizontalAlignment(JTextField.RIGHT);
  252.             tfBis.setEditable(false);
  253.             slidePane.add(tfBis);
  254.             slidePane.add(slide);
  255.             slidePane.setBorder(BorderFactory.createLineBorder(Color.black));
  256.             slide.addMouseMotionListener(this);
  257.             tfBis.addMouseMotionListener(this);
  258.             dslide.getContentPane().add(slidePane);
  259.             dslide.setLocation(loctf);
  260.             dslide.pack();
  261.             dslide.setVisible(true);
  262.        }
  263.     }
  264.     /**
  265.      * <p>
  266.      * Gestionnaire d'vnement utiliser pour dtecter les mouvement de souris.
  267.      * </p>
  268.      * <p>
  269.      * @param e : vnement rcupr.
  270.      * </p>
  271.      */
  272.     public void mouseMoved(MouseEvent me) {
  273.         if (!me.getComponent().equals(slide)) {
  274.             slide.removeMouseMotionListener(this);
  275.             tfBis.removeMouseMotionListener(this);
  276.             dslide.dispose();
  277.             return;
  278.         }
  279.         Rectangle zoneSensible=new Rectangle(slide.getX()+7,slide.getY(),slide.getWidth()-14,slide.getHeight()-15);
  280.         if (!zoneSensible.contains(me.getX(),me.getY()+slide.getY())) {
  281.             slide.removeMouseMotionListener(this);
  282.             tfBis.removeMouseMotionListener(this);
  283.             dslide.dispose();
  284.         }
  285.     }
  286.     /**
  287.      * <p>
  288.      * Gestionnaire d'vnement utiliser pour dtecter les mouvement de souris lorsque celle-ci a le bouton enfonc.
  289.      * </p>
  290.      * <p>
  291.      * @param e : vnement rcupr.
  292.      * </p>
  293.      */
  294.     public void mouseDragged(MouseEvent me) {
  295.         return;
  296.     }
  297.     //verificateur des champs de saisie
  298.     class IntVerifier extends InputVerifier {
  299.         public boolean verify(JComponent input) {
  300.             JTextField tf = (JTextField) input;
  301.             String s = tf.getText();
  302.             for (int i=0;i<s.length();i++)
  303.                 if (!Character.isDigit((s.charAt(i)))) {
  304.                     tf.setText(String.valueOf(init));
  305.                     return true;
  306.                 }
  307.             try {
  308.                 if ((Integer.parseInt(s)>max)||(Integer.parseInt(s)<min))
  309.                     tf.setText(String.valueOf(init));
  310.             } catch (Exception e) {
  311.                 tf.setText(String.valueOf(init));
  312.             }
  313.             return true;
  314.         }
  315.     }
  316.     class SliderListener implements ChangeListener {
  317.         public void stateChanged(ChangeEvent e) {
  318.             tf.setText(String.valueOf(((JSlider)e.getSource()).getValue()));
  319.             tfBis.setText(String.valueOf(((JSlider)e.getSource()).getValue()));
  320.         }
  321.     }
  322. }


Message édité par bobuse le 06-11-2002 à 14:54:51
n°157130
ragefan
Posté le 11-06-2002 à 22:48:01  profilanswer
 

ca marche très bien avec les "Document" ...


---------------
Member since 2000 !
n°157275
darklord
You're welcome
Posté le 12-06-2002 à 09:53:06  profilanswer
 

ton code est assez propore mais je mettrait pas l'init des tes objets GUI dans le constructuer mais dans une méthode privée séparée.
 
C'est un détail mais ca peut aider ...


---------------
Just because you feel good does not make you right
n°159148
bobuse
Posté le 14-06-2002 à 09:29:01  profilanswer
 

c clur, c'est un peu limite crade  :( mais bon c'est juste une chtite classe un peu vite fait !


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

  [Java] Limiter un JTextField a la saisie d'un numérique? [Résolu]

 

Sujets relatifs
[Java] récupérer le .class contenus dans un jar, c possible ?[Java] Connaître la mémoire utilisée par une classe
[JAVA] beta testeur[java] recuperer la date systeme !!!
[PHP] Insérer une image [résolu][Java] Comment accéder à une donnée de la classe mère??? [Résolu]
[JAVA] comment faire pour creer un TextField pour un password[java]repertoires et disques
[ HTML ] limiter la longeur d un <select> 
Plus de sujets relatifs à : [Java] Limiter un JTextField a la saisie d'un numérique? [Résolu]


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