Académique Documents
Professionnel Documents
Culture Documents
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).
JavaFX contient des outils très divers, notamment pour les médias audio et
vidéo, le graphisme 2D et 3D, la programmation Web, etc.
https://gluonhq.com/products/javafx/
https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
Introduction à javafx
les créateurs de JavaFX ont choisi des terminologies provenant du théâtre.
Introduction à javafx
Stocker ainsi les éléments à afficher permet de détecter plus facilement les zones
de l’écran qui sont activées et doivent être rafraichies en cas de modification
(déplacement, changement de couleur, etc. ) d'un noeud ou d'un groupe de nœuds
Introduction à javafx
@Override
public void start(Stage arg0) throws Exception {
// TODO Auto-generated method stub
}
}
La méthode static main() ( point d’entrée de toute application Java )
appelle la méthode launch() de la classe Application
Le mot clé Override est utilisé pour définir une méthode qui est héritée de
la classe parente
Layout – Gestionnaire de la mise en page
(Gestionnaire de placement)
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.
Gestionnaires de Placement ( StackPane)
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
launch(args);
}
Gestionnaires de Placement ( FlowPane) Exemple
@Override
public void start(Stage stage1) throws Exception {
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.TilePane;
import javafx.stage.Stage;
@Override
public void start(Stage stage4) throws Exception {
TilePane root = new TilePane();
root.setPadding(new Insets(10,10,10,10));
root.setHgap(20); root.setVgap(30);
Button button = new Button("Java");
Button button1 = new Button("C/C++");
button1.setPrefSize(70, 50);
Button button2 = new Button("C#");
Button button3 = new Button("Objective C");
Button button4 = new Button("Swift");
root.getChildren().addAll(button,button1,button2,button3,button4);
Scene scene = new Scene(root, 500, 300);
stage4.setTitle("Show TilePanel Layout");
stage4.setScene(scene);
stage4.show();
}
}
Gestionnaires de Placement ( TilePane)Exemple
Gestionnaires de Placement ( HBOX et VBOX)
4/ HBox et VBox :
A- HBox : Les éléments sont disposés dans un container horizontal de gauche à
droite
Gestionnaires de Placement ( HBOX et VBOX)
B- Vbox : Les éléments sont disposés dans un container vertical de haut en bas
Gestionnaires de Placement ( Exemple HBOX )
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
@Override
public void start(Stage stage) throws Exception {
TextField val1=new TextField();
val1.setPrefSize(60,10);
TextField val2=new TextField();
val2.setPrefSize(60,10);
TextField val3=new TextField();
val3.setPrefSize(60,10);
TextField val4=new TextField();
val4.setPrefSize(60,10);
}
public static void main(String[] args) {
launch(args);
}
}
Gestionnaires de Placement ( Exemple HBOX )
Gestionnaires de Placement ( BorderPane)
5/ BorderPane : Les éléments sont disposés selon 4 directions et un centre.
Le conteneur est divisé en 5 zones : nord, sud, est , ouest, et le centre. Il ne
peut donc pas contenir plus de 5 composants. Les composants sont placés en
fonction de leur taille préférée et leur alignement peut être modifié avec la
méthode setAlignement(). Si aucun composant n'est associé à une zone, alors
cette zone est de taille nulle. Les composants sont séparés horizontalement et
verticalement par des espaces, qui peuvent être modifiés par la méthode
setMargin()
Gestionnaires de Placement ( BorderPane)Exemple
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
@Override
public void start(Stage stage) throws Exception {
6/ GridPane : les éléments sont disposés selon une grille avec des indices (colonne,
ligne)
Gestionnaires de Placement ( GridPane)Exemple
public class EXP5 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
GridPane pane = new GridPane();
pane.setAlignment(Pos.CENTER); //affiche le pane en position centree H et V dans la
scene
pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
pane.setHgap(5.5);
pane.setVgap(5.5);
// Place nodes in the pane
pane.add(new Label("First Name:"), 0, 0);
pane.add(new TextField(), 1, 0);
pane.add(new Label("MI:"), 0, 1);
pane.add(new TextField(), 1, 1);
pane.add(new Label("Last Name:"), 0, 2);
pane.add(new TextField(), 1, 2);
Gestionnaires de Placement ( GridPane)Exemple
}
public static void main(String[] args){
launch(args);
}
Gestionnaires de Placement ( GridPane)Exemple
Autre méthode de grouper des noeuds (Group)
// création du soleil
Circle sun = new Circle(60, Color.web("yellow", 0.8));
sun.setCenterX(600);
sun.setCenterY(100);
Group(Exemple)
// création du sol
Rectangle ground = new Rectangle(0, 400,800,200);
ground.setFill(Color.GREEN);
Exercice 1
Ecrire le programme qui permet d’obtenir l’interface suivante :