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

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

Marsh Posté le 24-05-2002 à 16:54:04    

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]

Reply

Marsh Posté le 24-05-2002 à 16:54:04   

Reply

Marsh Posté le 24-05-2002 à 16:58:14    

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.

Reply

Marsh Posté le 24-05-2002 à 17:11:37    

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

Reply

Marsh Posté le 24-05-2002 à 17:15:00    

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]

Reply

Marsh Posté le 24-05-2002 à 18:39:43    

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??

Reply

Marsh Posté le 24-05-2002 à 20:42:10    

up

Reply

Marsh Posté le 24-05-2002 à 22:34:48    

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.

Reply

Marsh Posté le 25-05-2002 à 12:08:13    

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

Reply

Marsh Posté le 25-05-2002 à 13:37:13    

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.
Reply

Marsh Posté le 28-05-2002 à 00:27:24    

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
Reply

Marsh Posté le 28-05-2002 à 00:27:24   

Reply

Marsh Posté le 28-05-2002 à 16:09:11    

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]

Reply

Marsh Posté le 28-05-2002 à 16:26:17    

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


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 28-05-2002 à 16:44:28    

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.

Reply

Marsh Posté le 28-05-2002 à 17:57:21    

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


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 29-05-2002 à 10:02:23    

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.

Reply

Marsh Posté le 30-05-2002 à 01:30:08    

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
Reply

Marsh Posté le 03-06-2002 à 14:38:46    

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
Reply

Marsh Posté le 11-06-2002 à 22:48:01    

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


---------------
Member since 2000 !
Reply

Marsh Posté le 12-06-2002 à 09:53:06    

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
Reply

Marsh Posté le 14-06-2002 à 09:29:01    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed