R2.02 - Cours 2a - JavaFX - Developpement Dinterface

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 17

R2.

02 - DÉVELOPPEMENT
D’APPLICATIONS AVEC IHM
GAETAN.REY@@UNIV-COTEDAZUR.FR
BUT INFORMATIQUE – MARS 2022
DÉTOUR HISTORIQUE SUR LES IHM EN JAVA (1)
• Abstract Window Toolkit - AWT (1995)
• Composants « lourds » = ceux du système d’exploitation
• Application multiplateforme difficile à créer
• Refonte du mécanisme d’évènements d’AWT en 1997 avec JAVA1.1

• SWING (1998)
• Introduit avec le JAVA 1.2
• Composants « légers » = dessin en java
• Notion de Look&Feel avec un thème multiplateforme
• Introduction de Java2D dans JAVA 6 (fin 2006)
• Evolutions importantes (Transparence des frames, bordures arrondies …) dans JAVA 7 (2011)

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 2


DÉTOUR HISTORIQUE SUR LES IHM EN JAVA (2)
• JavaFX 1 (décembre 2008)
• Basé sur du JavaFX Script pour concurrencer Flex (MXML) et WPF (XAML)

• JavaFX 2 (octobre 2011)


• Devient une API et introduction de FXML : 2 modes (comme en WPF)
• Un basé sur du code Java (API) : Manière procédurale
• Un basé sur un langage descriptif (FXML) : Manière déclarative
• JavaFX 8 (mars 2014)
• Intégration dans JAVA 8

• JavaFX 11 (septembre 2018)


• Dissocié du JDK, pour suivre son propre processus de développement
GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 3
JAVAFX : LA MÉTAPHORE DE LA SALLE DE SPECTACLE
• Une application est une instance de la classe « Application »
• L’application « se déroule » dans un Stage (le théâtre)
• Le théâtre accueille une Scene
• La scène est jouée par différents d’acteurs
• Ces acteurs ont plusieurs noms qui les désignent
• des composants (Components) : nom orienté génie logiciel
• des interacteurs (Widgets) : nom orienté IHM
• des nœuds (Node) : nom orienté graphe de scène
GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 4
JAVAFX : GRAPHE DE SCÈNE
• Il représente la structure hiérarchique de l'interface graphique
• C'est un graphe acyclique orienté (arbre orienté) avec :
• une racine (root). C’est aussi un nœud
• des nœuds (nodes). Ils peuvent être intermédiaires ou finaux (des feuilles)
• des arcs qui représentent les relations parent-enfant
• Les feuilles de l'arbre sont généralement constitués de composants visibles
(boutons, champs texte, …)
• Les nœuds intermédiaires ainsi que la racine sont généralement des éléments de
structuration (souvent invisibles), typiquement des conteneurs ou panneaux de
différents types (HBox, VBox, BorderPane, …)

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 5


JAVAFX : LES MODULES [WIKIPÉDIA]
• javafx.base: Définit l'API de base
• javafx.controls: Définit la majorité des composants graphiques de l'API
• javafx.fxml: Définit l'API relative au langage FXML qui permet de décrire une interface utilisateur
d'une manière alternative à l'écriture de lignes de code
• javafx.graphics: Définit l'API relative aux conteneurs, animations, effets visuels, formes 2D et 3D,
images, impression, fenêtres, événements, robots, au support du CSS et à l'application
• javafx.media: Définit l'API dédié à la lecture de contenu audio et vidéo
• javafx.swing: Définit l'API qui fournit le support d’interopérabilité entre JavaFX et Swing
• javafx.web: Définit l'API dédié à l'affichage de contenu web (notamment un éditeur HTML et un
moteur de rendu de pages web basé sur WebKit)

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 6


GESTIONNAIRE DE D’AGENCEMENT
• En Java (Swing)
• On parle de « Layout Manager »
• FlowLayout, BorderLayout, GridLayout, BoxLayout, …
• On doit l’associer à un conteneur
• Jpanel, …
• En .Net (WPF)
• Ils servent également de conteneurs (double rôle)
• Grid, Canvas, StackPanel, DockPanel, …
• En Java (JavaFX 8+)
• On parlera de graphe de scène, mais comme en WPF, les rôles de containeur et de gestionnaire
d’agencement sont mélangés.
• HBox, VBox, FlowPane, BorderPane, TilePane, …

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 7


JAVAFX : LAYOUT-PANE
• Les conteneurs (Layout-Pane) représentent une famille importante parmi les
sous-classes de Node.
• Ils ont pour classe parente Pane et Region qui possèdent de nombreuses
propriétés et méthodes héritées par tous les conteneurs.
Node

Parent

Region

Pane

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 8


AnchorPane BorderPane FlowPane …
EXEMPLE JAVA (SWING) : BORDERLAYOUT
• C’est le gestionnaire d’agencement par défaut d’un ContentPane (conteneur principal de la
JFrame)
• Divisé en 5 zones
• Nord, Sud, Est, Ouest, Center
• 1 seul composant par zone

• Il consacre tout l'espace du conteneur aux composants.


• Le composant du centre dispose de la place inutilisée par les autres composants
this.getContentPane().add(new JButton("CENTER"),BorderLayout.CENTER);

Sélectionne le Ajoute un Crée un bouton


Indique la zone dans
conteneur de la classe composant anonyme avec
laquelle devra être
courante (celle-ci est dans le « CENTER » comme
GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR insérer notre bouton
Mars 2022 9
une JFrame) conteneur texte
EXEMPLE JAVAFX : BORDERPANE
• Conteneur avec un gestionnaire d’agencement proche du BorderLayout
• Divisé en 5 zones
• Top, Bottom, Left, Right, Center
BorderPane borderPane = new BorderPane();
ToolBar toolbar = new ToolBar();
HBox statusbar = new HBox();
Node appContent = new AppContentNode();
borderPane.setTop(toolbar);
borderPane.setCenter(appContent);
borderPane.setBottom(statusbar);

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 10


EXEMPLE JAVA (SWING) : FLOWLAYOUT
• Affiche les composants horizontalement
• Passe à la ligne suivante quand il n'y a plus de place sur la ligne
• Ne calcule la position des composants que sur un changement de taille de
son conteneur
• Possibilité de forcer un calcul avec revalidate()
• Chaque composant a sa taille préférée
bouton1.setPreferredSize(new Dimension(100,50));

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 11


EXEMPLE JAVAFX : FLOWPANE
• Deux orientations
• Horizontale : affiche les nœuds sur une ligne puis passe à la suivante s’il n’y a pas assez
de place
FlowPane fp = new FlowPane();
fp.setOrientation(Orientation.HORIZONTAL);

• Verticale : affiche les nœuds sur une colonne (de haut en bas) puis passe à la suivante
s’il n’y a pas assez de place
FlowPane fp = new FlowPane(Orientation.VERTICAL);

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 12


LES AUTRES PANES DE JAVAFX

StackPane VBox HBox


TilePane AnchorPane GridPane

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 13

TextFlow
ARBRES DE WIDGETS
• Faire le lien entre la maquette et l’implémentation
• Représentation hiérarchique de l’interface
• Un arbre qui débute de la racine (le conteneur principal : la fenêtre)
• En JavaFX : c’est le graphe de scène. La racine de l’arbre est donc le Stage
• Les nœuds non terminaux sont des conteneurs
• En JavaFx des Node de type Pane
• Les feuilles (nœuds terminaux) sont des conteneurs vides ou des interacteurs
• En JavaFx des Node de type Pane (conteneur) ou Control (interacteur)
• Les annotations décrivent les éléments de configuration des nœuds de l’arbre
• Alignement, couleur, bordure, taille, police de caractères, texte, …

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 14


EXEMPLE D’ARBRES DE WIDGETS
EN JAVAFX EN SWING
Stage JFrame

Scene JPanel JPanel JPanel

BorderPane JLabel JCheckBox JCheckBox JButton

HBox VBox VBox

Label CheckBox CheckBox Button

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 15


EXEMPLE ARBRE DE WIDGETS DÉCORÉ
Title : Titre
Stage

Size : 300 x 200


Scene
Zone : Top
Zone : Center
Alignement : Center Zone : Right
Alignement : Center_left
BorderPane Alignement : Bottom_left

HBox VBox VBox

Label CheckBox CheckBox Button

Text : Titre principal Text : Choix 1 Text : Choix 2 Text : Suivant 16


MERCI DE VOTRE ATTENTION,
AVEZ-VOUS DES QUESTIONS ?

GAËTAN REY – UNIVERSITÉ CÔTE D'AZUR Mars 2022 17

Vous aimerez peut-être aussi