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

avec Java Discussion :

Masque saisie heure


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut Masque saisie heure
    Bonjour,

    je souhaiterais utiliser JFormattedTextField qui puisse faire en sorte que l'utilisateur ne rentre que les heures et minutes sans avoir besoin de taper ":" entre les deux.

    Actuellement je possède ceci, le problème étant que l'utilisateur peut rentrer X nombres avant les ":" et pareil après...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtFieldHeureDebut = new JFormattedTextField(new SimpleDateFormat("HH:mm"));
    Merci pour votre aide

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Bonjour,

    Vous pouvez essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new JFormattedTextField(new MaskFormatter("##:##"));

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    Merci, j'avais déjà essayé et malheureusement ça ne marche pas...

  4. #4
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par Yokooo Voir le message
    Bonjour,

    je souhaiterais utiliser JFormattedTextField qui puisse faire en sorte que l'utilisateur ne rentre que les heures et minutes sans avoir besoin de taper ":" entre les deux.

    Actuellement je possède ceci, le problème étant que l'utilisateur peut rentrer X nombres avant les ":" et pareil après...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtFieldHeureDebut = new JFormattedTextField(new SimpleDateFormat("HH:mm"));
    Merci pour votre aide
    Bonjour.

    Ca doit venir du fait que le SimpleDateFormat est très permissif par défaut.

    Essaie en désactivant son "indulgence" via la méthode setLenient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    sdf.setLenient(false);
    JFormattedTextField txtFieldHeureDebut = new JFormattedTextField(sdf);

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    Je viens de faire ta méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    sdf.setLenient(false);
    JFormattedTextField txtFieldHeureDebut = new JFormattedTextField(sdf);
     
    txtFieldHeureDebut.setValue(hour.getTime());
    Et je me retrouve avec une erreur à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    add(txtFieldHeureDebut, gbc);
    L'erreur est :
    [21/04/2010 01:20:50.074][ERROR] java.lang.NullPointerException
    [21/04/2010 01:20:50.074][ERROR] at java.awt.Container.addImpl(Unknown Source)
    [21/04/2010 01:20:50.074][ERROR] at java.awt.Container.add(Unknown Source)
    [21/04/2010 01:20:50.074][ERROR] at com.actemium.syclopp.analyser.TimePanel.initComponents(TimePanel.java:176)
    EDIT :
    Il fallait supprimer JFormattedTextField qui était devant txtFieldHeureDebut, par contre ça n'a rien changé, je peux toujours taper 36 nombres dedans...

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Citation Envoyé par Yokooo Voir le message
    Merci, j'avais déjà essayé et malheureusement ça ne marche pas...
    Qu'est-ce qui ne marche pas ?

    J'ai testé de mon côté, et ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    JFormattedTextField txtFieldHeureDebut = new JFormattedTextField(new MaskFormatter("##:##"));
    txtFieldHeureDebut.setValue(sdf.format(new Date()));
    Qu'en pensez-vous ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    En fait lorsque j'utilise le MaskFormatter cela pose un problème.

    Il m'est demandé de rajouter après ma classe"throws ParseException", et lorsque je le rajoute toutes mes autres classes liées se mettent en erreur en me demandant de rajouter également cette exception.

    J'ai essayé de les mettre aussi mais du coup beaucoup d'erreurs se crées à l'intérieur de mon programme.

    Donc votre solution doit fonctionner mais je vais devoir en trouver une autre qui s'intègrera plus facilement dans mon programme.

    La méthode de DeadPool fonctionne bien car si la valeur rentrée est incorrecte alors il remet une date valide par défaut, cependant j'aurais souhaité que l'utilisateur puisse rentrer uniquement deux nombres pour les heures et deux pour les minutes.

  8. #8
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Citation Envoyé par Yokooo Voir le message
    En fait lorsque j'utilise le MaskFormatter cela pose un problème.

    Il m'est demandé de rajouter après ma classe"throws ParseException", et lorsque je le rajoute toutes mes autres classes liées se mettent en erreur en me demandant de rajouter également cette exception.

    J'ai essayé de les mettre aussi mais du coup beaucoup d'erreurs se crées à l'intérieur de mon programme.

    Donc votre solution doit fonctionner mais je vais devoir en trouver une autre qui s'intègrera plus facilement dans mon programme.

    La méthode de DeadPool fonctionne bien car si la valeur rentrée est incorrecte alors il remet une date valide par défaut, cependant j'aurais souhaité que l'utilisateur puisse rentrer uniquement deux nombres pour les heures et deux pour les minutes.
    Et la même chose avec un bloc try catch ne conviendrait pas ?
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try {
    	SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    	JFormattedTextField txtFieldHeureDebut = new JFormattedTextField(new MaskFormatter("##:##"));
    	txtFieldHeureDebut.setValue(sdf.format(new Date()));
    } catch (Exception e) {
    	//Traitement de l'exception, ceci est un exemple
    	System.out.println(e.getMessage());
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    On va y arriver ^^

    Alors maintenant l'affichage est bon, je ne peux rentrer que deux valeurs comme voulu mais mais le programme me renvoi une erreur ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    startTime.setTime((Date)txtFieldHeureDebut.getValue());
    A mon avis ça vient du format qui ne doit plus être bon... mais bon pas sur

  10. #10
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    De quel type est startTime ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    C'est un Calendar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendar startTime = Calendar.getInstance();

  12. #12
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Je pense que ceci pourrait répondre à ce dernier problème :
    http://java.developpez.com/faq/java/...G_parse_string

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    Merci.

    Donc je viens de rajouter ma fonction stringToDate() et en attribut j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    			txtFieldHeureDebut = new JFormattedTextField(new MaskFormatter("##:##"));
    			txtFieldHeureDebut.setValue(sdf.format(hour.getTime()));
    			txtFieldHeureDebut = stringToDate(txtFieldHeureDebut, );
    Mais je crois qu'il y a un truc que je n'arrive pas à comprendre...
    Bien sur ça ne fonctionne pas car il me dit que mes attributs ne sont pas des string.

    Un peu paumé la...

  14. #14
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Je pense que ce que vous cherchez à faire serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    txtFieldHeureDebut = new JFormattedTextField(new MaskFormatter("##:##"));
    txtFieldHeureDebut.setValue(sdf.format(new Date()));
    startTime.setTime(sdf.parse((String)txtFieldHeureDebut.getValue()));
    Explications :
    Ligne 1 : Création du parser de dates
    Ligne 2 : Création du JFormattedTextField en limitant la saisie
    Ligne 3 : insertion de l'heure courante (heure + minute)
    Ligne 4 : Mise à jour de startTime

    Par contre, avec cette implémentation, startTime.getTime() (la date du Calendar) sera le 1er Janvier 1970.
    Le jour est-il important pour startTime, ou ne voulez-vous qu'il contienne que l'heure et les minutes ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 44
    Points
    44
    Par défaut
    Oui la date est importante, je vais laisser finalement comme DeadPool avait dit, c'est déjà bien. ça devient beaucoup trop complexe pour moi car mon startTime est dans une autre fonction et il me demande de remettre des try. Vu que je dois répéter l'action 4 fois ça va me donner quelque chose de lourd...


    En tout cas merci beaucoup de vous être investi dans ma demande !

    Yokooo

Discussions similaires

  1. [AC-2007] Masque saisie et calcul date et heure
    Par flyboy_mbn dans le forum IHM
    Réponses: 8
    Dernier message: 14/05/2012, 11h15
  2. Masque de saisie heure / Mask Time field
    Par youss20 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/06/2010, 14h56
  3. Masque de saisie heure
    Par adamess dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 06/02/2007, 16h52
  4. masque saisie formulaire
    Par cramix dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/12/2006, 16h11
  5. Masque saisie php date
    Par jedi186 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 13/06/2006, 15h59

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