Tutoriel 4: créer la VuePartie
#
Créer la classe VuePartie
#
-
Dans le paquet
vues, créer la classeVuePartie -
Ajuster la signature de la classe, qui doit hériter de
ViewFx:public class VuePartie extends ViewFx { -
Avec Ctrl+.Eclipse: Ctrl+1, ajouter les
importet la méthode obligatoire:public class VuePartie extends ViewFx { @Override public void initialize() { } }- NOTES:
- la méthode
initializeest requise par Ntro - on va s’en servir pour vérifier que les références aux contrôles de la vue sont bien initialisés
- la méthode
- NOTES:
-
S’assurer d’avoir l’arborescence suivante
Télécharger tux.png
#
- Télécharger tux.png et placer le fichier dans le répertoire
pong/src/main/resources/images/
Créer le fichier partie.fxml
#
-
Dans le répertoire
pong/src/main/resources/vues, créer le fichierpartie.fxml -
Ajouter le code suivant dans au fichier
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.*?> <?import javafx.scene.control.*?> <?import javafx.scene.image.*?> <VBox xmlns:fx="http://javafx.com/fxml" fx:controller="pong.frontal.vues.VuePartie" styleClass="conteneur" id="vue-partie"> <Pane styleClass="petit-espace-vertical"/> <HBox VBox.vgrow="ALWAYS" styleClass="conteneur"> <Pane styleClass="petit-espace-horizontal"/> <ImageView> <image> <Image url="@/images/tux.png" /> </image> </ImageView> <Pane styleClass="petit-espace-horizontal"/> </HBox> <Pane styleClass="petit-espace-vertical"/> <HBox styleClass="conteneur"> <Pane HBox.hgrow="ALWAYS" styleClass="grand-espace-horizontal"/> <Button fx:id="boutonQuitterPartie" text="%quitterPartie" styleClass="gros-bouton" id="bouton-quitter-partie"> </Button> <Pane HBox.hgrow="ALWAYS" styleClass="grand-espace-horizontal"/> </HBox> <Pane styleClass="petit-espace-vertical"/> </VBox> -
S’assurer que
fx:controllerdéclare bien le nom complet de la classeVuePartiepong.frontal.vues.VuePartie
-
S’assurer d’avoir l’arborescence suivante
Ajouter le CSS et les traductions #
-
Dans
dev.css, ajouter la règle suivante:#vue-partie { -fx-border-color:darkgreen; } -
Dans
dev.cssetprod.css, ajouter les règles suivantes#vue-partie { -fx-border-color:darkgreen; } .petit-espace-horizontal { -fx-min-width:1em; -fx-max-width:2em; } .grand-espace-horizontal { -fx-min-width:2em; -fx-max-width:10em; } .mini-espace-vertical { -fx-min-height:1em; -fx-max-height:2em; } .petit-espace-vertical { -fx-min-height:3em; -fx-max-height:10em; } .grand-espace-vertical { -fx-min-height:3em; -fx-max-height:20em; } -
Dans
fr.properties, ajouter le texte pourquitterPartiequitterPartie=Quitter partie -
Dans
en.properties, ajouter le texte pourquitterPartiequitterPartie=Quit Game
Déclarer la Vue dans le Frontal #
-
Ouvrir
FrontalPong.javaet déclarer laVuePartiepublic class FrontalPong implements FrontendFx { @Override public void registerViews(ViewRegistrarFx registrar) { // ... registrar.registerView(VuePartie.class, "/vues/partie.fxml"); } }
Ajouter la tâche pour créer la Vue #
-
Dans
CreerVues.java, ajouter la tâche suivantepublic class CreerVues { public static void creerTaches(FrontendTasks tasks) { tasks.taskGroup("CreerVues") .waitsFor("ViewLoaders") .contains(subTasks -> { // ... // ajouter creerVuePartie(subTasks); }); } // ... // ajouter private static void creerVuePartie(FrontendTasks subTasks) { subTasks.task(create(VuePartie.class)) .waitsFor(viewLoader(VuePartie.class)) .executesAndReturnsValue(inputs -> { ViewLoader<VuePartie> viewLoader = inputs.get(viewLoader(VuePartie.class)); VuePartie vuePartie = viewLoader.createView(); return vuePartie; }); }