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

Langage Java Discussion :

Création d'un compteur


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut Création d'un compteur
    Bonjours à tous

    Je suis tout neuf dans JAVA et je souhaiterai réaliser un compteur.
    Je viens du monde VB et VB.NET et dans ces IDE il y a un contrôle Timer.
    Je n'ai pas trouvé d'équivalent dans JAVA.
    En fouillant un peu, j'ai vu que l'on peut trouver un timer en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import javax.swing.timer
    Découvrant le JAVA, je ne suis pas encore très habitué à sons fonctionnement et sa syntaxe.

    j'ai donc fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected Timer Timer1;
    ensuite, j'ai voulu donner une durée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Timer.SetDelay(1000);
    Le delay est bien en milliseconde?
    lorsque j'initialise le timer, il bloque l'exécution du code suivant.

    Quelqu'un peut-il m'aider ou me passer un bout de code pour voir la marche à suivre?

    Merci d'avance

    Pascal

  2. #2
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Euh... Est-tu sûr de ton this.Timer ? Ne serait-ce pas this.Timer1 ? De plus la classe Timer venant de swing est plutôt pour les applications graphiques, si tu veux un timer tout simple utilise plutôt java.util.Timer.

    Le setDelay du timer de swing permet de spécifier le temps entre différents évènements gérés par des ActionListener. Si tu veux simplement un chrono, java.util.Timer. Il te permet (via la méthode schdule) de spécifier quels évènements doivent arriver à quelle période.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Pour faire ce que tu souhaites, il faut utiliser la classe :
    java.lang.Thread

    et faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
       Thread.sleep(TempsEnMilliSeconde);
    }catch(InterruptedException e){
       System.out.println("Interrompu par un autre thread");
    }

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Si tu restes avec le Timer Swing (il y a egalement java.util.Timer (non-swing) et tu peux aussi faire ca avec une simple Thread), tu dois utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer.setRepeats(true);
    mais il s'agit la normalement du comportement par defaut. Peux-tu nous montrer le code de l'ActionListener que tu as associe a ton Timer s'il te plait ainsi que l'integralite de ta phase d'initialisation s'il te plait ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    Merci pour votre aide

    En fait, c'est surtout là que j'ai besoin de votre aide

    je ne sais pas par quel bout commencer, ni comment procéder

    Comme je l'ai dit, je suis tout neuf dans ce language et faute de doc (j'ai commandé un livre sur les composant swing mais pas encore reçu et j'irai choisir un livre sur le java, il y en a tellement que je préfère regarder le contenu avant), je tatonne

    @+

    Pascal

  6. #6
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    On ne demande qu'à t'aider, à condition que tu nous expliques précisément ton problème.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Un code similaire à celui-ci peut te donner des indications pour commencer (le code est vite tapé sans rien tester) :

    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
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.text.*;
    import javax.swing.*;
     
    public class Test {
      /** Self-test main.
      * @param args Arguments from the command-line.
      */
      public static void main(String... args) {
         // Start at EDT.
         SwingUtilities.invokeLater(new Runnable() {
            /* {@inheritDoc}
            */
            public void run() { 
               //final Calendar calendar = Calendar.getInstance();
               final DateFormat format = DateFormat.getTimeInstance(DateFormat.LONG);
               // Initialize and configure timer.
               final javax.swing.Timer timer = new javax.swing.Timer(1000, new ActionListener() {
                 /* {@inheritDoc}
                 */
                 public void actionPerformed(ActionEvent event) {
                    long time = System.currentTimeMillis();
                    //calendar.setTimeInMillis(time);
                    //Date date = calendar.getTime();
                    // In case of error, use commented lines instead.
                    Date date = new Date(time);
                    String out = format.format(date);
                    System.out.println(out);
                 }
               });
               // Initialize and configure button.
               final JToggleButton button = new JToggleButton("Start");
               button.addActionListener(new ActionListener() {
                 /* {@inheritDoc}
                 */
                 public void actionPerformed(ActionEvent event) {
                    if (button.isSelected()) { 
                      button.setText("Stop");
                      timer.restart();
                    }
                    else { 
                      button.setText("Start");
                      timer.stop();
                    }
                 }
               });
               // Initialize and show frame.
               JFrame frame = new JFrame("Test");
               frame.add(button);
               frame.setSize(500, 400);
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               frame.setVisible(true);
            }
         });
      }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    Le but de mon programme.

    C'est un compte à rebours avec 2 option de temps (120" et 240") avec au paravent un décompte de 20".


    • 1 bouton départ
    • 1 bouton arrêt
    • 1 bouton RaZ
    • 1 bouton quitter
    • une Combolist pour choisir le temps (120 ou 240, avec la possibilité de des durées)
    • 1 label pour afficher les secondes
    • 1 progressbar pour évaluer le temps restant
    • 1 panel dans lequel je change la couleur (rouge, orange et vert)


    Mode opératoire
    A l'ouverture du prog:
    le fond est rouge, la valeur par défaut sélectionné est de 120"
    Départ
    • Le fond reste rouge
    • un bip de signale de départ
    • on décompte 20"
    • le progressebar se "vide" et le label affiche le décompte
    • au bout des 20", Bip et le fond passe au vert
    • le progressebar se "vide" et le label affiche le décompte du temps sélectionné
    • lorsqu'il ne reste plus que 30", le fond passe au Orange
    • à la fin du décompte, Bip et le fond passe au rouge.


    Pas besoin d'explication pour arrêt et RaZ

    J'ai déjà écris ce programme en VB.Net et HB++ (pour Palm), mais tout ceci n'est pas vraiment portable sous Linux et Mac.

    Voilà pourquoi je souhaite le réécrire en JAVA afin d'en faire profiter le plus grand nombre

    Si vous voulez voir le programme en action, je vous passe l'adresse où vous pouvez récupérer le prog en .NET

    http://mp11495-ovh.ovh.org/download.php?lng=fr

    Rubrique Téléchargement>Compteur

    Merci d'avance pour vos lumières

    @+

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    Le temps que je tape mes explication le code est arrivé.

    Merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut J'ai trouvé ...
    Bonjour à tous

    J'ai fini par trouver un bout de code qui m'a permis de finir mon programme.

    Voici la démarche pour ceux que ça intéresse. (ou qui viennent comme moi du VB où c'est un peu pré-maché)

    les imports :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import java.util.Timer;
    import java.util.TimerTask;
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public JFrameCompteur() {
            initComponents();
    //Mon  nouveau timer
           Timer0 = new Timer();
    ...
    }
    Là,on dit ce que l'on veut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class affiche extends TimerTask {
        int i ;  //i pour incrémenter (ou décrémenter), utilisé dans le run()
            public void run() {
                 //ici, ce que l'on souhaite faire à chaque cycle du timer
                 // faire un this.Timer0.cancel(); pour arrêter le timer
             }
     
    }

    On lance la machine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void CpartiMonKiki(){
           Timer0.schedule(new affiche(),i , 1000);// i = nombre de répétitions, 1000 durée en millisecondes
    }

    J'espère avoir été clair. En tout cas, ça marche

    Merci à tous pour votre aide

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Fait attention cependant si tu poursuis plus tard avec java.util.Timer, ce dernier ne s'execute pas dans l'EDT mais dans une Thread a part, il faut donc faire attention lors des modifications des composants Swing. En general lui preferer javax.swing.Timer si on doit bidouiller l'interface graphique.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    Merci pour l'info

    As tu une méthode similaire avec swing?
    J'ai un peu ramé pour l'utiliser.

    @+

    Pascal

  13. #13
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Voir le code que j'ai donne plus haut. En gros TimerTask est remplace par un ActionListener. Apres ca reste kif kif/pareil a l'usage.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Points : 71
    Points
    71
    Par défaut
    Merci

    C'est justement ActionListener qui me posait un problème. Je ne comprenais pas d'où ça sortait.

    Je ferai des essais.

    Merci pour tout

    Pascal

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

Discussions similaires

  1. Création d'un compteur de valeur dans un champs
    Par darkspoilt dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/08/2008, 14h35
  2. Réponses: 1
    Dernier message: 05/02/2008, 15h35
  3. [XSLT] création d'un compteur
    Par Katachana dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 20/06/2007, 11h03
  4. création d'un compteur dans un formulaire
    Par poney01 dans le forum IHM
    Réponses: 14
    Dernier message: 11/05/2007, 14h04
  5. [MySQL] Problème de création d'un compteur.
    Par fabreizhad dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/03/2006, 00h18

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