I Introduction à JavaFX JavaFX est une technologie créée par Sun Microsystems q

I Introduction à JavaFX JavaFX est une technologie créée par Sun Microsystems qui appartient désormais à Oracle. Avec l'apparition de Java 8 en mars 2014, JavaFX devient la bibliothèque de création d'interface graphique officielle du langage Java, pour toutes les sortes d'application (applications mobiles, applications sur poste de travail, applications Web), le développement de son prédécesseur Swing étant abandonné (sauf pour les corrections de bogues). JavaFX contient des outils très divers, notamment pour les médias audio et vidéo, le graphisme 2D et 3D, la programmation Web, la programmation multi-fils etc. I II. Utilisation de la bibliothèque JavaFX. JavaFX exécute dans l'ordre, chaque fois qu'une application est lancée, les actions suivantes : • Construit une instance de la classe Application spécifiée • Appelle la méthode init () • Appelle la méthode start (javafx.stage.Stage) • Attend l'achèvement de l'application, • Appelle la méthode stop () Notez que la méthode de démarrage (start) est abstraite et doit être surchargée. Les méthodes d'initialisation (init) et d'arrêt (stop) ont des implémentations concrètes qui ne font rien. L’exécution du code suivant montre que l’exécution de la méthode init n’est pas faite par le même fil d’exécution (thread) que l’appel au constructeur par défaut et l’exécution de la méthode start. public class FenetreApplication extends Application { public void start ( Stage primaryStage ) { // definir la troupe d’acteurs Group root = new Group () ; // definir la scène ( largeur , hauteur , fond ) Scene scene = new Scene ( root , 800 , 600 , Color .BLACK) ; primaryStage . setTitle (”Un t i t r e de fenêtre . . . ”) ; primaryStage . setScene ( scene ) ; // definir un rectangle a peu près centré 2 Rectangle rectangle = new Rectangle (400 , 300 , 40 , 30) ; rectangle . setFill ( Color .CHARTREUSE) ; root . getChildren () . add( rectangle ) ; // afficher le theatre primaryStage . show () ; } public static void main( String [ ] args ) { launch ( args ) ; } } I III. Panneaux et composants de base. II 1. Gestionnaire de la mise en page (Layout) Un layout ou gestionnaire de mise en page est un noeud graphique qui hérite de la classe javafx.scene.layout.Pane. Il s'agit d'une entité qui contient d'autres noeuds et qui est chargée de les déplacer, de les disposer, voire de les redimensionner de manière à changer la présentation de cet ensemble de noeuds et à les rendre utilisables dans une interface graphique. Les layout fonctionnent donc de manière similaire aux layouts de AWT/Swing à ceci près qu'il ne s'agit pas ici de classes utilitaires, mais d'instances de la classe Region qui sont directement placées dans la scène. Un gestionnaire est un noeud graphique et peut donc être positionné et manipulé, ou subir des transformations et effets comme n'importe quel autre noeud de SceneGraph. Les différences importantes entre Panel (panneau) et Group (groupe) sont : • Un panneau peut avoir sa propre taille et être redimensionnable, par contre un groupe prend les limites collectives de ses enfants et n'est pas directement redimensionnable. • Le panneau doit être utilisé lorsque vous souhaitez positionner ses noeuds en position absolue. Un layout (organisation) est une classe de l’API Graphique permettant d’organiser les objets graphiques dans la fenêtre. En JavaFX, il existe huit types de layouts : 1. Le BorderPane qui vous permet de diviser une zone graphique en cinq parties : top, down, right, left et center. 2. La Hbox qui vous permet d'aligner horizontalement vos éléments graphiques. 3. La VBox qui vous permet d'aligner verticalement vos éléments graphiques. 4. Le StackPane qui vous permet de ranger vos éléments de façon à ce que chaque nouvel élément inséré apparaisse au-dessus de tous les autres. 5. Le GridPane permet de créer une grille d'éléments organisés en lignes et en colonnes 6. Le FlowPane permet de ranger des éléments de façon à ce qu'ils se positionnent automatiquement en fonction de leur taille et de celle du layout. 7. Le TilePane est similaire au FlowPane, chacune de ses cellules fait la même taille. 8. L'AnchorPane permet de fixer un élément graphique par rapport à un des bords de la fenêtre : top, bottom, right et left. I IV. Utilisation d'un éditeur graphique (JavaFX Scene Builder). 3 1. Configuration d’Eclipse Nous devons paramétrer Eclipse pour qu’il utilise le JDK 8 et qu’il sache où trouver le Scene Builder : • • Ouvrez les préférences et sélectionnez la partie Java | Installed JREs. • • Cliquez sur le bouton Add… pour ajoutez le JDK 8 puis sur Standard VM et sélectionnez le dossier contenant le JDK 8. • • Supprimez les autres JREs et JDKs afin que le JDK 8 devienne le JDK par défaut (default) ! • • Sélectionnez la partie Java | Compiler. Définissez la Compiler compliance level à 1.8 ! • • Sélectionnez la partie JavaFX puis spécifiez le chemin de votre exécutable Scene Builder ! • 2. Utilisation de scene builder Créer une classe vue de fichier fxml sur Eclipse par file new other new FXML document. Après, ouvrez ce fichier en faisant un clic droit sur ce dernier et choisir open with scene builder. Dès lors, vous avez l’interface de scene builder qu’on apprendra à utiliser en TP. I V. Les évènements II 1. Notion d’évènement Dans les applications JavaFX, les événements signifient que quelque chose s'est produit : un utilisateur a cliqué sur un bouton, appuie sur une touche, déplace une souris ou effectue d'autres actions, … Dans JavaFX, un événement est une instance de la classe javafx.event.Event ou de toute sous-classe d'Event. JavaFX fournit plusieurs sous-classe d'Event, notamment DragEvent, KeyEvent, MouseEvent, ScrollEvent et d'autres. Vous pouvez définir votre propre sous-classe d'Event en étendant la classe Event. Chaque événement inclut les informations suivantes : Event Type, Source and Target. La hiérarchie des évènements : Le type d'événement de niveau supérieur dans la hiérarchie est Event.ROOT, qui est équivalent à Event.ANY. Dans les sous-types, le type d'événement ANY est utilisé pour désigner n'importe quel type d'événement dans la classe d'événements. Par exemple, pour fournir la même réponse à n'importe quel type d'événement de type « touche », utilisez KeyEvent.ANY comme type d'événement pour le filtre d'événements ou le gestionnaire d'événements. Pour répondre uniquement lorsque la touche est libérée, utilisez le type d'événement KeyEvent.KEY_RELEASED pour le filtre ou le gestionnaire 4 Les gestionnaires d'événements (EventHandler) vous permettent de gérer les événements. Un noeud peut avoir un ou plusieurs gestionnaires pour gérer un événement. Un seul gestionnaire peut être utilisé pour plusieurs noeuds et plusieurs types d'événements. 2. Enregistrement d'un gestionnaire d'événements Pour traiter un événement, un noeud doit enregistrer un gestionnaire d'événements. Un gestionnaire d'événements est une implémentation de l'interface EventHandler. La méthode handle () de cette interface fournit le code qui est exécuté lorsque l'événement associé au gestionnaire est reçu par le noeud qui a enregistré le gestionnaire. Pour enregistrer un gestionnaire, utilisez la méthode addEventHandler de la classe javafx.scene.Node. Cette méthode prend le type d'événement et le gestionnaire comme arguments : objet.setOnMouseClicked(new EventHandler<MouseEvent>(){ public void handle(MouseEvent me) { //instructions à exécuter lors de cet événement } }); public final <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler). La méthode pratique d'enregistrement d'un seul gestionnaire de type « ActionEvent » est: setOnAction(EventHandler<ActionEvent> value). Une application JavaFX peut donc se résumer : – Préparer la Scene avec les différents noeuds – Préparer la Scene avec ses dimensions et ajouter le noeud racine de la Scene – Préparer le Stage et y ajouter la Scene et afficher le Stage Les convenience methods de JavaFX : setOnXXX(EventHandler<T> event) où XXX est le type de l’événement (sans la terminaison Event) Exemples : setOnAction(EventHandler<ActionEvent> event) setOnKeyPressed(EventHandler<KeyEvent> event) setOnMousePressed(EventHandler<MouseEvent> event) 3. Propagation des événements On distingue 3 phases : a. Target selection Le système détermine la cible de l’événement selon des règles différentes en fonction du type d’événement. Exemple : événements souris => noeud de plus bas niveau dans le graphe de scène sous le pointeur de la souris. b. Event capturing phase L’événement est propagé en descendant le graphe de scène depuis la racine jusqu’à la cible offrant l’opportunité au noeud de chaque niveau de réagir à l’événement. 5 c. Event bubbling phase L’événement remonte le graphe depuis la cible jusqu’à la racine offrant une 2ème opportunité aux noeuds de chaque niveau de réagir à l’événement Ajouter des gestionnaires d’événements à chaque étape de la propagation des événements : a. Sur la cible ou sur n’importe lequel de ses parents dans le graphe b. Sur l’une ou les deux phases du cycle de propagation Event capturing phase : addEventFilter(EventType<T>, EventHandler<? super T>) Event bubbling phase addEventHandler(EventType<T>, EventHandler<? super T>) Interrompre la propagation lorsque l’on le souhaite en appelant la méthode consume () sur l’événement écouté dans l’EventHandler de notre choix I VI. Liaison de données JavaFx propose un mécanisme de binding qui permet de lier des données entre elles. Ces données doivent être encapsulées dans une Property La modification d’une uploads/Management/ introduction-a-javafx.pdf

  • 24
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mai 03, 2021
  • Catégorie Management
  • Langue French
  • Taille du fichier 0.1060MB