Vous êtes sur la page 1sur 5

Mme Cheikh.

E L2

Correction TP4 Graphique Javafx

1 ère méthode :
Création d’une application graphique avec JavaFx en utilisant une seule classe
Java Main Class :
Fichier : MyJavaApplicationFX.java

package GestionProduit;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class MyJavaApplicationFX extends Application {

public static void main(String[] args) {


Application.launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {

primaryStage.setTitle("Les produits");
BorderPane borderPaneRoot=new BorderPane();
Scene scene=new Scene(borderPaneRoot,600,400);
primaryStage.setScene(scene);
// Creer le Layout pour structurer les composants horizonatlement

HBox hbox1 =new HBox();


// Définir la marge entre le contenu et les bords du conteneur Hbox1
hbox1.setPadding(new Insets(10,10,10,10));
// définir l'espace entre les composants du hbox1
hbox1.setSpacing(10);

1
Mme Cheikh.E L2

Label labelProd= new Label("Produits");


TextField textFieldNom=new TextField();
Button buttonAjouter=new Button("Ajouter");
hbox1.getChildren().addAll(labelProd,textFieldNom,buttonAjouter);
borderPaneRoot.setTop(hbox1);

// Parie pour Vbox qui est la partie center du borderPane


VBox vBox1=new VBox();
vBox1.setPadding(new Insets(10));
vBox1.setSpacing(10);

ListView<String> lstV=new ListView<>();


lstV.getItems().addAll("Ordinateur Dell","Imprimante Canon");
vBox1.getChildren().add(lstV);
borderPaneRoot.setCenter(vBox1);
primaryStage.show();

// Partie Evenementielle :
buttonAjouter.setOnAction(event-> {
String nom =textFieldNom.getText();
lstV.getItems().add(nom);
//Pour vider la zone de texte
textFieldNom.clear();
//Pour remettre le curseur au début de la zone de texte
textFieldNom.requestFocus();

});

}
}

2 ème méthode :
Création d’une application graphique avec JavaFx en utilisant la notation XML :

Fichier : MyJavaApplicationFxV2.java
package GestionProduit;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class MyJavaApplicationFxV2 extends Application {

2
Mme Cheikh.E L2

public static void main(String[] args) {


Application.launch(args);
}

@Override
public void start(Stage primaryStage)throws Exception {
BorderPane borderPaneroot=
FXMLLoader.load(getClass().getResource("Layout.fxml"));
Scene scene=new Scene(borderPaneroot,600,400);
primaryStage.setScene(scene);
primaryStage.setTitle("Les produits");
primaryStage.show();
}
}

Fichier : Layout.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.collections.FXCollections?>

<BorderPane xmlns:fx="http://javafx.com/fxml/1"
fx:controller="GestionProduit.LayoutControleur" >
<top>
<HBox spacing="10">
<padding >

<Insets left="10" top="10" right="10" bottom="10" ></Insets>

</padding>
<children>
<Label text= "Produits"> </Label>
<TextField fx:id="textFieldNom"></TextField>
<Button text="Ajouter" onAction="#addProduits" ></Button>
</children>
</HBox>
</top>
<center>

3
Mme Cheikh.E L2

<VBox spacing="10">
<padding>
<Insets left="10" top="10" right="10" bottom="10" ></Insets>
</padding>
<ListView fx:id="listView1">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Ordinateur Dell"/>
<String fx:value="Imprimante Canon"/>
</FXCollections>

</items>
</ListView>
</VBox>
</center>
</BorderPane>

Fichier : LayoutControleur.java

package GestionProduit;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;

public class LayoutControleur {


@FXML TextField textFieldNom;
@FXML ListView<String> listView1;
public void addProduits()
{ String nom=this.textFieldNom.getText();
this.listView1.getItems().add(nom);
//Pour vider la zone de texte
textFieldNom.clear();
//Pour remettre le curseur au début de la zone de texte
textFieldNom.requestFocus();
}
}

3ème méthode :
Création d’une application graphique avec JavaFx en utilisant le Scene Builder de
Gluon pour la génération automatique du fichier XML :
C’est le même code que la 2 ème méthode la seule différence c’est qu’en créant un
fichier Layout.xml graphiquement avec Scene Builder le code xml de ce fichier va
être généré automatiquement.

4
Mme Cheikh.E L2

4 ème méthode :
Ces trois fichiers vont être changés pour obtenir notre interface.
Les fichiers sont :

MyApplicationjavaFXV4.java : fichier java


Layout.fxml : fichier XML
Controller.java : fichier contrôleur où on gère la partie
évènementielle

Vous aimerez peut-être aussi