IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Question sur les JFormattedTextField


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut Question sur les JFormattedTextField
    Bonsoir tout le monde ,

    J'ai vu qu'on pouvait restreindre le type de données écrit dans un champ grâce aux JFormattedTextField . Je veux que dans mon champ , l'utilisateur ne puisse entrer que des entiers . D'après la doc , j'ai donc fait ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    NumberFormat nf = NumberFormat.getIntegerInstance();
     
    nf.setParseIntegerOnly(true);
    nf.setMinimumIntegerDigits(0);
    nf.setMaximumIntegerDigits(1);
    ...
    champ = new JFormattedTextField(nf);
    Je peux donc entrer que des entiers mais je voudrais pouvoir effacer le chiffre que j'ai entré mais je ne peux pas (Je voudrais que le champ soit vide de nouveau) . Y'a t'il une méthode dans JFormattedTextField qui le fasse ?

    Merci

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Hmm j'y arrive toujours pas . La touche suppr est bloquée apparement une fois une valeur entrée ... Je suis sûr qu'il y a bien une méthode qui permette de mettre à blanc ce genre de champ .

    Si vous avez une idée

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    As-tu consulté le tutoriel de Java dédié aux JFormattedTextField ?
    http://java.sun.com/docs/books/tutor...textfield.html

    En copiant/collant le code qu'ils proposent, je te propose l'exemple ci-dessous, prêt-à-compiler. L'utilisateur est contraint de rentrer un entier à 2 chiffres maximum.

    Cordialement,

    Nicolas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    import java.awt.*;
    import javax.swing.*;
    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeEvent;
    import java.text.*;
     
    // par Nicolas_75
    // mais très fortement inspiré de http://java.sun.com/docs/books/tutorial/uiswing/components/formattedtextfield.html
    // en réponse à http://www.developpez.net/forums/showthread.php?t=171309
    // dimanche 25 juin 2006
     
    public class Exemple056_JFormattedTextField extends JPanel
            implements PropertyChangeListener {
     
        private double nombre = 46;
     
        //Labels to identify the fields
        private JLabel nombreLabel;
        private JLabel resultatLabel;
     
        //Strings for the labels
        private static String nombreString = "nombre choisi par l'utilisateur : ";
        private static String resultatString = "double : ";
     
        //Fields for data entry
        private JFormattedTextField nombreField;
        private JFormattedTextField resultatField;
     
        //Formats to format and parse numbers
        private NumberFormat nombreFormat = NumberFormat.getNumberInstance();
        private NumberFormat resultatFormat = NumberFormat.getCurrencyInstance();
     
        public Exemple056_JFormattedTextField() {
            super(new BorderLayout());
            double resultat = 2*nombre;
     
            //Create the labels.
            nombreLabel = new JLabel(nombreString);
            resultatLabel = new JLabel(resultatString);
     
            // l'utilisateur ne peut rentrer qu'un entier à 2 chiffres maxi :
            nombreFormat.setMaximumIntegerDigits(2);
     
            //Create the text fields and set them up.
            nombreField = new JFormattedTextField(nombreFormat);
            nombreField.setValue(new Double(nombre));
            nombreField.setColumns(10);
            nombreField.addPropertyChangeListener("value", this);
     
            resultatField = new JFormattedTextField(resultatFormat);
            resultatField.setValue(new Double(resultat));
            resultatField.setColumns(10);
            resultatField.setEditable(false);
            resultatField.setForeground(Color.red);
     
            //Tell accessibility tools about label/textfield pairs.
            nombreLabel.setLabelFor(nombreField);
            resultatLabel.setLabelFor(resultatField);
     
            //Lay out the labels in a panel.
            JPanel labelPane = new JPanel(new GridLayout(0,1));
            labelPane.add(nombreLabel);
            labelPane.add(resultatLabel);
     
            //Layout the text fields in a panel.
            JPanel fieldPane = new JPanel(new GridLayout(0,1));
            fieldPane.add(nombreField);
            fieldPane.add(resultatField);
     
            //Put the panels in this panel, labels on left,
            //text fields on right.
            setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
            add(labelPane, BorderLayout.CENTER);
            add(fieldPane, BorderLayout.LINE_END);
        }
     
        /** Called when a field's "value" property changes. */
        public void propertyChange(PropertyChangeEvent e) {
            Object source = e.getSource();
            if (source == nombreField) {
                nombre = ((Number)nombreField.getValue()).doubleValue();
            }
            double resultat = 2*nombre;
            resultatField.setValue(new Double(resultat));
        }
     
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Make sure we have nice window decorations.
            JFrame.setDefaultLookAndFeelDecorated(true);
     
            //Create and set up the window.
            JFrame frame = new JFrame("FormattedTextFieldDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            //Create and set up the content pane.
            JComponent newContentPane = new Exemple056_JFormattedTextField();
            newContentPane.setOpaque(true); //content panes must be opaque
            frame.setContentPane(newContentPane);
     
            //Display the window.
            frame.pack();
            frame.setVisible(true);
        }
     
        public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour Nicolas_75 et merci pour ta réponse .

    Cependant dans ton code (que j'ai testé) , je peux entrer un nombre entier à plus de 2 chiffres ... ? Mais merci pour ton lien . La réponse était toute simple .. setValue() ca fait bien ce que je veux . J'irai voir la doc sur java.com plus souvent

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Je t'en prie.

    Chez moi, avec le code ci-dessus, tu peux entrer un nombre de plus de 2 chiffres, mais il ne sera pas "pris en compte". Le système le tronque automatiquement. Si tu veux "forcer" 2 chiffres, même à l'entrée des données, il faut regarder du côté des Mask...

    Nicolas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49
  2. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 02h38
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo