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

JavaFX Discussion :

Timer java fx


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Lycéen(seconde)
    Inscrit en
    Octobre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen(seconde)

    Informations forums :
    Inscription : Octobre 2018
    Messages : 32
    Par défaut Timer java fx
    Bonjour,

    j'ai eu l'idée de crée un timer pour voir le temps en jeux . J'ai fait ceci mais le timer reste à 0 :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private int timerj1 = 0;
     
    Label ltim = new Label("Timer :" + " " + timerj1);
    ltim.setVisible(false);
    Timeline loop4 = new Timeline(new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>(){
      public void handle(ActionEvent arg) {			                	
        timerj1 ++;
      }
    }));
    loop4.play();

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Bon soit pourquoi pas même si je suis pas sur que Timeline soit la meilleure manière de faire ca ?
    Et, euh, comment le label pourrait-il changer son texte puisqu'il ignore totalement tout du changement de valeur de timerj1 ?????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void handle(ActionEvent arg) {
    	timerj1 ++;
    	ltim.setText("Timer :  " + timerj1);
    }
    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

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen(seconde)
    Inscrit en
    Octobre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen(seconde)

    Informations forums :
    Inscription : Octobre 2018
    Messages : 32
    Par défaut Javafx timer
    Bonjour,
    merci de m’avoir répondu, je n'avais pas penser à ceci, c'est une trés bonne idée mais cela ne marche pas puisque le timer par de 0 , va jusqu'à 1 mais après il reste et il bloque à 1.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Ce qui est normal puisque TimeLine non-seulement sert a faire des animation et non pas des timer mais en plus ici ne boucle pas (donc il s’exécute une seule et unique fois).

    Et de plus, même si tu le faisais boucler, lorsqu'on fait une TimeLine qui boucle un certain nombre de fois ou qui se répète indéfiniment, elle n'invoque pas son handle de toute manières (d’où ma remarque que ce n’était sans doute pas la meilleur classe pour ça)...

    Pour conserver la chose simple on va rester sur le principe de TimeLine que tu sembles vouloir utiliser mais on va passer sur des classes dédiés, a savoir des Transition, histoire de simplifier le 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
    22
    package timer;
     
    import javafx.animation.PauseTransition;
    import javafx.animation.SequentialTransition;
    import javafx.application.Application;
    import javafx.stage.Stage;
    import javafx.util.Duration;
     
    public class Main extends Application {
        private int time = 0;
     
        @Override
        public void start(final Stage stage) throws Exception {
            stage.show();
            final var pause = new PauseTransition(Duration.seconds(1));
            pause.setOnFinished(event -> System.out.println(++time));
            final var timer = new SequentialTransition(pause);
            timer.setCycleCount(PauseTransition.INDEFINITE);
            timer.play();
            stage.setOnCloseRequest(event -> timer.stop());
        }
    }
    Ce qu'il faut retenir :
    • PauseTransition sert a faire une pause et a incrémenter le timer quand elle se termine.
    • SequentialTransition sert a boucler la pause, car si on faisait boucler directement PauseTransition jamais l’incrémentation n'aurait lieu.
    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 averti
    Homme Profil pro
    Lycéen(seconde)
    Inscrit en
    Octobre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen(seconde)

    Informations forums :
    Inscription : Octobre 2018
    Messages : 32
    Par défaut
    Bonjour,
    merci de m'avoir répondu mais moi je suis sur eclipse 8 et non pas sur eclipse 10 donc il ne reconnait pas var et je voudrais afficher le chronomètre dans mon application en non pas dans la console, dans mon jeux avec des Label, un pour les seconds et l'autre pour les minutes, mais pas pour les heures.merci

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Alors :
    1. Ce qui est impossible à savoir d'après tes posts précédents à part le fait que tu utilises encore du code pre-JDK7 qui reste totalement compatible et accepté par les IDE récents.
    2. Et c'est si difficile que ça de modifier le code en replaçant var par le type approprié. Ce code fait littéralement 7 lignes et var n'y est présent que 2 fois... trop dur la vie..
    3. Même type de remarque : qu'est ce qui t’empêche d'adapter ce code de test à ton environment graphique ? Et on a déjà vu précédemment que ce qui clochait pour la mise à jour de ton Label...


    Tu as les bases, à toi de faire le reste du boulot ; quitte à revenir poser une autre question plus tard si tu rencontre un écueil.
    Un peu d'initiative les gens (ce n'est pas histoire d'être méchant, c'est vraiment comme ça que ça fonctionne - le code que j'ai écrit ci-dessus est facilement transposable dans le code que tu as posté au début)
    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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/03/2013, 22h21
  2. exécution d'un timer JAVA
    Par Saiyan54 dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2006, 11h07
  3. programer un timer Java
    Par karim86 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 21/07/2006, 17h34
  4. [java.util.Timer]Comment arrêter l'exécution d'un Thread
    Par Invité dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 07/06/2006, 07h54
  5. [Java 1.4 timer] Nommer un timer ? c'est possible ?
    Par guipom dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/03/2006, 15h27

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