Créer une fenêtre avec JavaFX.

AteK5

Membre
Inscription
20 Décembre 2014
Messages
715
Réactions
123
Points
5 526
RGCoins
25
Yo !
Aujourd'hui je vais vous montrer comment créer une fenêtre avec les librairies JavaFX.
Ces librairies sont désormées inclut dans la dernière version de JDK.
Pour commencer il faut que votre classe hérite de la classe Application :​
Code:
public class main extends Application{
}
Après il faut que vous faites la methode d'implémentation vous allez alors noter ceci avec la notation @Override au dessus​
Code:
@Override
public void start(Stage stage) throws Exception {
}
Dans votre méthode main vous devez marquer ceci : launch(args);
Une fois cela fait on va pouvoir "construire" notre fenêtre.
Il y a plusieurs type de fenêtre en JavaFX :
-Pane
-AnchorPane
-BorderPane
-VBox
etc.
Nous allons utiliser le type Pane. Nous allons donc créer un nouvelle objet de la classe Pane dans notre méthode start : Pane root = new Pane();
après on va donner les dimensions de notre fenêtre :
root.setPrefSize(800, 600);
la première valeur est la largeur, la seconde et la hauteur.
Après cela on va initialiser notre Scene en créant un nouvelle objet de la classe Scene :
Scene scene = new Scene(root);
notre scene prend comme paramètre root qui est notre fenêtre.
après on va initialiser notre paramètre stage, puis on va lancer notre fenêtre :
stage.setScene(scene);
stage.show();
Normalement vous devriez avoir ce résultat :

You must be registered for see images attach
Code:
package com.atek.tutoriel1;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

/**
* Created by alex on 16/12/15.
*/
public class Main extends Application{
    public static void main(String [] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        Pane root = new Pane();
        root.setPrefSize(800, 600);

        root.getChildren().addAll();

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }
}

Pour ajouter des textbox ou autre vous devrez mettre :
root.getChildren().addAll();
dans les parenthèse du addAll vous mettez tous vos objets.

Quelques lignes de codes :

mettre un titre à votre fenêtre
Code:
stage.setTitle("Votre titre");
empêcher que votre fenêtre soit "resizable"
Code:
stage.setResizable(false);
changer le style de votre fenêtre​
Code:
        stage.initStyle(StageStyle.DECORATED);
        stage.initStyle(StageStyle.TRANSPARENT);
        stage.initStyle(StageStyle.UNDECORATED);
        stage.initStyle(StageStyle.UNIFIED);
        stage.initStyle(StageStyle.UTILITY);
fermer la fenêtre
Code:
stage.close();
Mettre vos instructions quand l'utilisateurs veut fermer la fenêtre​
Code:
        stage.setOnCloseRequest(event -> {
            //vos instructions
        });
créer un bouton / textArea / TextField​
Code:
        Button btn = new Button("nom du bouton");

        TextArea txtA = new TextArea();

        TextField txtF = new TextField();
Créer un label ou une zone de texte​
Code:
        Label label = new Label("le nom de votre label");
    
        Text text = new Text("Votre text");

Quand un bouton est en action (par exemple l'utilisateur clique dessus)​
Code:
        btn.setOnAction(event -> {
            //vos instructions
        });
Quand une une touche de clavier est presser dans la fenêtre (par exemple entrer)​
Code:
scene.setOnKeyPressed(event -> {
            if(event.getCode() == KeyCode.ENTER) {
                //vos instructions
            }
        });
Quand une touche est relachée​
Code:
        scene.setOnKeyReleased(event -> {
            if(event.getCode() == KeyCode.ENTER) {
                //vos instructions
            }
        });
Mettre une image en background(attention /!\ l image doit être en premier dans les "children" de root)​
Code:
        InputStream is = Files.newInputStream(Paths.get("votre url de votre image par exemple : res/imega/image.png"));
        Image img = new Image(is);
        is.close();
        ImageView imgV = new ImageView(img);
Changer la taille d'une image​
Code:
        imgV.setFitHeight(500);//hauteur
        imgV.setFitWidth(500);//largeur
Situer un objet dans la fenêtre​
Code:
        Nom_de_votre_objet.setTranslateX(500);//500 pixel par rapport au "mur" de gauche
        Nom_de_votre_objet.setTranslateY(500);//500 pixel par rapport au "plafond"

les 3 principals transitions :
les fade transitions permettent de faire une transitions par un changement d'opacité​
Code:
        FadeTransition ft = new FadeTransition(Duration.seconds(0.5), Nom_de_votre_objet);
        ft.setFromValue(1);//valeur d'opacité de départ : 1 = objet visible
        ft.setToValue(0);//valeur d'opacité de fin : 0 = objet non visible
        ft.setOnFinished(evt -> Nom_de_votre_objet.setVisible(false));//statue de l'objet à la fin de la transitions
        ft.play();//on lance la transition
les translate transitions permettent de faire une transitions par le déplacement d'un objet​
Code:
        TranslateTransition tt = new TranslateTransition(Duration.seconds(0.5), Nom_de_votre_objet);
        tt.setFromX(50);// ou setFromY c'est comme vous voulez
        tt.setToX(100);// ou setToY c'est comme vous voulez
        tt.setOnFinished(evt -> Nom_de_votre_objet.setTranslateX(100));// ou setTranslateY suivant dans quelle sens vous l'avez déplacer
        tt.play();
Les fill transition permettent de faire une transition par la couleur d'un objet​
Code:
        FillTransition ft1 = new FillTransition(Duration.seconds(0.5), Nom_de_votre_objet);
        ft1.setFromValue((Color) Paint.valueOf("#00000"));// on aurez put le remplacer par un Color.BLACK
        ft1.setToValue((Color) Paint.valueOf("#111111"));//je sais pas si cette couleur existe mais vous avez compris le principe
        ft1.setOnFinished(evt -> Nom_de_votre_objet.setFill(Paint.valueOf("#111111")));
        ft1.play();
J'espère que cela vous auras aider si vous avez pas compris quelque chose contacter moi par mp.
(désoler des fautes d'orthographes).​
 
Retour
Haut