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

Composants Java Discussion :

Problème de valeur d'un JFormattedTextField


Sujet :

Composants Java

  1. #1
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut Problème de valeur d'un JFormattedTextField
    Salut, je dispose d'un JFormattedTextField, lequel me donne une valeur que je récupère et test a chaque fois qu'une touche est appuyée
    voici mon code :
    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
    private javax.swing.JFormattedTextField jFormattedTextField1;
    [...]
    jFormattedTextField1 = new javax.swing.JFormattedTextField(NumberFormat.getNumberInstance());
    [...]
            jFormattedTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyReleased(java.awt.event.KeyEvent evt) {
                    changeDejaPaye(evt);
                }
            });
    [...]
        private void changeDejaPaye(java.awt.event.KeyEvent evt) {
            // TODO add your handling code here:
            try {
                DecimalFormat df=new DecimalFormat();
                df.setMaximumFractionDigits(2);
                double dejaPaye=((Number)jFormattedTextField1.getValue()).doubleValue();
                double netAPayer=facture.getTotal().getTotalTTC()-dejaPaye;
                facture.getTotal().setNetAPayer(netAPayer);
                jLabel7.setText(df.format(netAPayer));
            } catch(java.lang.NullPointerException e) {}
        }
    le problème c'est que le catch est appelé au moment ou j'essaie de récupérer la variable dejaPaye, je me suis creusé la tête mais je ne vois pas d'où peu venir le problème.
    Merci pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben, affiche la stackTrace : il te dira quelle ligne pose problème, et donc où se trouve la variable null.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    d'une manière générale, c'est une très mauvaise idée de mettre un catch vide. Soit vous ne gérez pas l'exception -> alors faites la remonter, ne la bloquez pas. soit vous gérez l'exception -> alors faites en quelques chose d'utile (traitement d'erreur, trace dans les logs, etc)

  4. #4
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ben, affiche la stackTrace : il te dira quelle ligne pose problème, et donc où se trouve la variable null.
    il semblerait que ce soit cette ligne qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double dejaPaye=((Number)jFormattedTextField1.getValue()).doubleValue();
    Merci !

  5. #5
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    apparement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jFormattedTextField1.getValue()
    a une valeur nulle (null)
    je vois pas trop comment faire.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut
    Salut,

    soit tu gère un message à retourner à l'utilisateur si la valeur est null,
    soit tu empêche l'action si la valeur est null, mais dans tous les cas il faut que tu nous précise le type d'exception retourné et vérifie que le champ à bien une valeur avec un system.out ou en mode debug.

    De plus est ce que tu est bien sur que ton champ contient bien une valeur et à quel moment tu la renseigne

  7. #7
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ninlock Voir le message
    Salut,

    soit tu gère un message à retourner à l'utilisateur si la valeur est null,
    soit tu empêche l'action si la valeur est null, mais dans tous les cas il faut que tu nous précise le type d'exception retourné et vérifie que le champ à bien une valeur avec un system.out ou en mode debug.

    De plus est ce que tu est bien sur que ton champ contient bien une valeur et à quel moment tu la renseigne
    Que me conseil tu de mettre dans mon catch pour arriver a faire cela?
    Perso j'ai affiché la valeur jFormattedTextField1.getValue() car je me doutais que c'était la valeur null, et en effet elle vaut null.
    Merci

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Par défaut
    Soit sur ton action du bouton tu vérifie que la valeur de ton champs et null,
    soit tu laisse remonter l'exception.
    Et dans les 2 cas
    soit tu écrit un message dans ta fenêtre pour préciser de remplir le champ
    soit tu ouvre une dialog Box en utilisant par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JOptionPane.showMessageDialog(parentPanel,"Veuillez saisir une valeur avant de valider");
    Une autre solution, plus longue a mettre en place serait de désactiver le bouton tant que le champ est vide, en ajoutant bien sûr un listener sur le champ pour réactiver le bouton de validation quand il contient quelque chose.

    Par contre, tu ne l as pas précisé mais quand tu rempli le champ tu arrive bien à récupérer la valeur?

  9. #9
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Moi je conseille de ne pas mettre de catch mais de tester si la valeur est nulle avant de vouloir récupérer la doubleValue.

    Une exception c'est long et couteux a générer alors qu'il suffirait de faire un test pour voir si getValue retourne null.

    Et dans le cas ou ça retourne null, tu ne fais rien, vu que tu n'as rien à faire.. un return est parfait dans ce cas là. Si tu veux informer l'utilisateur du problème tu peux utiliser un JOptionPane juste avant mais je déconseille.

    Ce qui est le plus élégant pour ce genre de chose c'est un petit label en rouge en dessous du TextField qui donne la raison du problème.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  10. #10
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Moi je conseille de ne pas mettre de catch mais de tester si la valeur est nulle avant de vouloir récupérer la doubleValue.

    Une exception c'est long et couteux a générer alors qu'il suffirait de faire un test pour voir si getValue retourne null.

    Et dans le cas ou ça retourne null, tu ne fais rien, vu que tu n'as rien à faire.. un return est parfait dans ce cas là. Si tu veux informer l'utilisateur du problème tu peux utiliser un JOptionPane juste avant mais je déconseille.

    Ce qui est le plus élégant pour ce genre de chose c'est un petit label en rouge en dessous du TextField qui donne la raison du problème.

    Bulbo
    Oui c'est ce que j'ai fait (tester si le jFormattedTextField est null) mais le probleme c'est que la valeur dans le champ elle est correcte (un double ou un entier) c'est pour ça que je demande de l'aide.
    J'ai aussi remarqué que si je mettais une valeur valide et j'appuyais sur ENTER, la ça fonctionne.
    Merci

  11. #11
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    J'ai dit de tester si la valeur est nulle pas le TextField.


    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Double val = (Double) jFormattedTextField1.getValue();
     
    if (null == val)
    {
       // JOptionPane ??
      return;
    }
     
    // Ici la suite du code du listener
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  12. #12
    Membre éprouvé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bulbo Voir le message
    J'ai dit de tester si la valeur est nulle pas le TextField.


    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Double val = (Double) jFormattedTextField1.getValue();
     
    if (null == val)
    {
       // JOptionPane ??
      return;
    }
     
    // Ici la suite du code du listener
    Oui c'est ce que je comprends pas justement, pourquoi la valeur est nulle alors que le champ lui contient une valeur valide.
    Merci

  13. #13
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Tu as dit toi même qu'en cas de valeur valide tu n'as pas de problème.. faut savoir.

    Je pense que le formattedTextField te retourne null justement quand ce que tu as rentré n'est pas un double..
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

Discussions similaires

  1. Problème de valeur nulle
    Par romulus34 dans le forum Access
    Réponses: 11
    Dernier message: 21/10/2005, 15h18
  2. Problème de valeur
    Par Kerod dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 22/09/2005, 17h00
  3. Problème de valeur de retour de MessageDlg
    Par Pill_S dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/08/2005, 15h44
  4. problème récupération valeur d'un "div"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2005, 10h04
  5. Problème de valeur null dans un recordset
    Par Petzouille57 dans le forum Access
    Réponses: 3
    Dernier message: 19/05/2005, 11h27

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