ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 2
        • Calendrier groupes 1, 3
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
        • Module 1.3: tableau d'objets
        • Examen 1
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Équipes
          • Horaire groupe 1
          • Horaire groupe 2
          • Horaire groupe 3
          • Groupe 1
          • Groupe 2
          • Groupe 3
        • Projets vedettes 2022
        • Projets vedettes 2023
        • Projets vedettes 2024
        • Survol
        • Structure
        • Calendrier
        • Calendrier des séances
        • Évaluations
        • Exemples de jeu
        • Exemples de pages
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Module 4: modèle et navigation
        • Module 5: ajouter le dorsal, modifier le modèle
        • Module 7: améliorer l'affichage
        • Module 8: jeu en 2d
        • Module 9: client/serveur
        • Module 10: plusieurs instances du même modèle
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
      • Ajout Format JSON
        • Calendrier
        • Évaluations
        • Structure du cours
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
        • 03: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 04: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Index
      • Point de vue sur l'IA
    Afficher la fenêtre et le graphe des tâches
    • Afficher la fenêtre et le graphe des tâches
      • Créer des paquets pour le Frontal
      • Créer des classes pour le frontal
      • Vérifier l’arborescence du projet pong
      • Créer une tâche pour afficher la fenêtre
      • Ajouter la tâche au frontal
      • Déclarer le frontal dans AppPong
      • Exécuter pong
      • Afficher le graphe de tâches

    Afficher la fenêtre et le graphe des tâches #

    Créer des paquets pour le Frontal #

    • En VSCode, ajouter le paquet frontal au paquet pong

    • En VSCode, ajouter le paquet taches au paquet pong.frontal

    Créer des classes pour le frontal #

    • En VSCode, ajouter la classe FrontalPong au paquet frontal

    • En VSCode, ajouter la classe PremierAffichage au paquet frontal.taches

    Vérifier l’arborescence du projet pong #

    Créer une tâche pour afficher la fenêtre #

    • Ouvrir PremierAffichage.java

    • Avant d’ajouter des tâches à un frontal, copier le import static suivant:


    import static ca.ntro.app.tasks.frontend.FrontendTasks.*;


    • Ajouter une méthode creerTaches qui va créer un groupe de tâches contenant les tâches d’initialisation

      public class PremierAffichage {
      
              public static void creerTaches(FrontendTasks tasks) {
      
                  tasks.taskGroup("PremierAffichage")
      
                       .contains(subTasks -> {
      
                           afficherFenetre(subTasks);
      
                       });
              }
          }
      
    • Ajouter une méthode afficherFenetre qui va créer la tâche d’affichage de la fenêtre

      public class PremierAffichage {
      
              // ...
      
              private static void afficherFenetre(FrontendTasks subTasks) {
      
                  subTasks.task("afficherFenetre")
      
                       .waitsFor(window())
      
                       .executes(inputs -> {
      
                           Window window = inputs.get(window());
      
                           window.setTitle("Pong");
      
                           window.show();
      
                       });
              }
          }
      
    • Attention d’importer ca.ntro.app.services.Window

    Ajouter la tâche au frontal #

    • Ouvrir FrontalPong.java et s’assurer que la classe implante FrontendFx

    • Utiliser Ctrl+.Eclipse: Ctrl+1 pour ajouter le import FrontendFx

    • Utiliser Ctrl+.Eclipse: Ctrl+1, pour ajouter les méthodes obligatoires de FrontendFx

    • Dans la méthode createTasks, appeler PremierAffichage.creerTaches afin d’ajouter les tâches d’initialisation

      public class FrontalPong implements FrontendFx {
      
              @Override
              public void createTasks(FrontendTasks tasks) {
      
                  PremierAffichage.creerTaches(tasks);
      
              }
      
              @Override
              public void registerEvents(EventRegistrar registrar) {
      
              }
      
              @Override
              public void registerViews(ViewRegistrarFx registrar) {
      
              }
      
              @Override
              public void registerSessionClass(SessionRegistrar registrar) {
      
              }
      
      
          }
      

    Déclarer le frontal dans AppPong #

    • J’ouvre AppPong.java

    • Dans la méthode registerFrontend, s’assurer de déclarer le frontal du client pong

      public class AppPong implements NtroAppFx {
      
              public static void main(String[] args) {
                  NtroAppFx.launch(args);
              }
      
              @Override
              public void registerFrontend(FrontendRegistrarFx registrar) {
                  registrar.registerFrontend(FrontalPong.class);
              }
      
              @Override
              public void registerMessages(MessageRegistrar registrar) {
      
              }
      
              @Override
              public void registerModels(ModelRegistrar registrar) {
      
              }
      
              @Override
              public void registerBackend(BackendRegistrar registrar) {
      
              }
      
          }
      
    • Utiliser Ctrl+.Eclipse: Ctrl+1 pour importer FrontalPong

    Exécuter pong #

    • Exécuter le projet en VSCode ou en GitBash

      $ sh gradlew pong
      
    • Observer que:

      • l’application affiche maintenant une fenêtre (il y a un frontal)
      • on peut maintenant quitter l’application en fermant la fenêtre
    • Fermer fenêtre pour quitter l’application

    Afficher le graphe de tâches #

    • On a maintenant un graphe de tâches pour le frontal

    • Ce graphe est sauvegardé dans pong/_storage/graphs/frontend.png

    • Afficher mon graphe de tâches

      • on a bien un groupe de tâches qui contient
        • la tâche window
        • la tâche afficherFenetre qui attend que la fenêtre existe avant de l’afficher
    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Afficher la fenêtre et le graphe des tâches
      • Créer des paquets pour le Frontal
      • Créer des classes pour le frontal
      • Vérifier l’arborescence du projet pong
      • Créer une tâche pour afficher la fenêtre
      • Ajouter la tâche au frontal
      • Déclarer le frontal dans AppPong
      • Exécuter pong
      • Afficher le graphe de tâches