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 :

formatted field with document listener


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut formatted field with document listener
    j'avais 2 TextField avec un Document Listener pour une opération arithmétique qui fonctionne bien, j'ai ajouté un format et changé en JFormatted Field alors ça génère des erreurs partout
    voici le code d'un des champs (le même pour l'autre)
    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
     
    txtRevP = new FormattedCurrencyField();
    txtRevP.getDocument().addDocumentListener(new DocumentListener() {
     
    			@Override
    			public void removeUpdate(DocumentEvent e) {
    				if ((txtRevP.getText().length() !=0) && (txtRevM.getText().length() !=0))   {
    					txtCumul.setText(String.valueOf(
    						obj.Cumul(Double.valueOf(txtRevP.getText()),
    								Double.valueOf(txtRevM.getText()))
    						));
    					Mont(Double.valueOf(txtCumul.getText()));
    				}
     
    			}
    			@Override
    			public void insertUpdate(DocumentEvent e) {
    				if ((txtRevP.getText().length() !=0) && (txtRevM.getText().length() !=0))   {
    					txtCumul.setText(String.valueOf(
    						obj.Cumul(Double.valueOf(txtRevP.getText()),
    								Double.valueOf(txtRevM.getText()))
    						));
    					Mont(Double.valueOf(txtCumul.getText()));
    				}
    			}
    			@Override
    			public void changedUpdate(DocumentEvent arg0) {
    				if ((txtRevP.getText().length() !=0) && (txtRevM.getText().length() !=0))   {
    					txtCumul.setText(String.valueOf(
    						obj.Cumul(Double.valueOf(txtRevP.getText()),
    								Double.valueOf(txtRevM.getText()))
    						));
    					Mont(Double.valueOf(txtCumul.getText()));
    				}
    			}
     
     
    		});
    dès que je clic sur l'un des champs sans commencer à écrire ça donne ça :
    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "0,00"
    et même en écrivant ça donne trop d'erreur la même, alors le format utilisé et d'une classe que j'ai téléchargé

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Les formats dans les JFormattedTextField sont localisés (ils dépendent de la langue, du pays, et d'autres paramètres propres à l'utilisateur) : dans un nombre décimal, à virgule donc, selon la locale, tu auras un caractère "," au lien du "." du format par défaut. Or la méthode valueOf() (ou parseDouble) ne fonctionne que avec le format par défaut, donc la virgule n'est pas reconnue comme séparateur de décimales. Pour parser des chaînes de caractères qui sont localisées, il faut utiliser un java.text.Format (un DecimalFormat par exemple). JFormattedTextField dispose par ailleurs d'une méthode, getValue(), qui te permet d'obtenir la valeur parsée avec le bon format (enfin celui qui a été fourni lors de la construction du JFormattedTextField, donc normalement celui que tu estimes être le bon) : il faudra juste la caster en Double (la méthode retourne de l'Object).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut
    j'ai changé getText() à getValue()et pour qu'il accepte le cast par Double.valueOf() j'ai ajouté toString() car il n'accepte pas le cast direct d'un objet à un double, mais je reçois un affichage dans la console, celà affecte t-il mon application après? l'affichage que je reçoit est le montant que j'envoie à mon JTextField, à chaque fois qu'il change la console l'affcihe

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Pour le cast vers un double, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double var = (Double)field.getValue();
    Si tu ne peux pas faire ça dans ton cas, c'est parce que la valeur obtenue par JFormattedTextField n'est présente que si on valide (d'ailleurs si tu valides sans virgule dans la saisie avec un NumberFormat, tu obtiendras un Long). Pour faire du traitement intermédiaire, avant validation, il te faudra passer par un format et getText().
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Date en format français pour document.lastModified
    Par kurtbosh dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/07/2009, 11h59
  2. [XL-2007] Récupération format cellule autre document
    Par albedo0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2009, 17h02
  3. formater automatiquement un document .doc
    Par Jasmine80 dans le forum Word
    Réponses: 20
    Dernier message: 30/07/2008, 01h16
  4. mon document listener ne me laisse plus ecrire
    Par timboy11 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 30/06/2008, 21h45
  5. [VBA-W]Enregistrer sous au format excel un document Word
    Par tazamorte dans le forum VBA Word
    Réponses: 3
    Dernier message: 20/03/2007, 22h03

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