From 3e776eb717f172eef4f4d5487f0dd4defc0d1dca Mon Sep 17 00:00:00 2001
From: Mao Lesimple <mao.lesimple@etu.umontpellier.fr>
Date: Mon, 31 Mar 2025 14:50:39 +0200
Subject: [PATCH 1/4] exo 1

---
 .../iut/exercice1/FenetreLogiciel.java        | 103 +++++++++++++++++-
 1 file changed, 99 insertions(+), 4 deletions(-)

diff --git a/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java b/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
index 4a7e29a..491ed65 100644
--- a/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
+++ b/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
@@ -1,18 +1,113 @@
 package fr.umontpellier.iut.exercice1;
 
 import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.geometry.Orientation;
+import javafx.geometry.Pos;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.layout.*;
 import javafx.stage.Stage;
 
 public class FenetreLogiciel extends Application {
-
     @Override
     public void start(Stage primaryStage) {
-        // code de l'exercice 1
+        BorderPane root = new BorderPane();
+        Scene scene = new Scene(root, 600, 400);
+
+        // ==== Barre de menu ====
+        MenuBar menuBar = new MenuBar();
+        Menu menuFile = new Menu("File");
+        Menu menuEdit = new Menu("Edit");
+        Menu menuHelp = new Menu("Help");
+
+        menuFile.getItems().addAll(
+                new MenuItem("New"),
+                new MenuItem("Open"),
+                new MenuItem("Save"),
+                new SeparatorMenuItem(),
+                new MenuItem("Close")
+        );
+
+        menuEdit.getItems().addAll(
+                new MenuItem("Cut"),
+                new MenuItem("Copy"),
+                new SeparatorMenuItem(),
+                new MenuItem("Paste")
+        );
+
+        menuBar.getMenus().addAll(menuFile, menuEdit, menuHelp);
+
+        // ==== Titre Centré ====
+        Label titleLabel = new Label("Premier exemple manipulant les conteneurs");
+        VBox titleBox = new VBox(titleLabel);
+        titleBox.setAlignment(Pos.CENTER);
+        titleBox.setPadding(new Insets(5));
+
+        VBox topContainer = new VBox(menuBar, new Separator(), titleBox, new Separator());
+        root.setTop(topContainer);
+
+        // ==== Panneau gauche ====
+        VBox leftPanel = new VBox(10);
+        leftPanel.setPadding(new Insets(10));
+        Label lblButtons = new Label("Boutons :");
+        Button btn1 = new Button("Bouton 1");
+        Button btn2 = new Button("Bouton 2");
+        Button btn3 = new Button("Bouton 3");
+        leftPanel.getChildren().addAll(lblButtons, new Separator(), btn1, btn2, btn3);
+
+        // ==== Formulaire ====
+        GridPane form = new GridPane();
+        form.setPadding(new Insets(20));
+        form.setHgap(10);
+        form.setVgap(10);
+        form.setAlignment(Pos.CENTER);
+
+        Label lblName = new Label("Name:");
+        Label lblEmail = new Label("Email:");
+        Label lblPassword = new Label("Password:");
+        TextField txtName = new TextField();
+        TextField txtEmail = new TextField();
+        PasswordField txtPassword = new PasswordField();
+        Button btnSubmit = new Button("Submit");
+        Button btnCancel = new Button("Cancel");
+
+        form.add(lblName, 0, 0);
+        form.add(txtName, 1, 0);
+        form.add(lblEmail, 0, 1);
+        form.add(txtEmail, 1, 1);
+        form.add(lblPassword, 0, 2);
+        form.add(txtPassword, 1, 2);
+
+        HBox buttonBox = new HBox(10, btnSubmit, btnCancel);
+        buttonBox.setAlignment(Pos.CENTER);
+        form.add(buttonBox, 1, 3);
+
+        // ==== Séparateur vertical entre gauche et centre ====
+        Separator verticalSeparator = new Separator(Orientation.VERTICAL);
+        verticalSeparator.setPadding(new Insets(10, 10, 10, 10));
+
+        // ==== Centre (gauche + séparateur + formulaire) ====
+        HBox centerContent = new HBox(leftPanel, verticalSeparator, form);
+        centerContent.setAlignment(Pos.CENTER_LEFT);
+        centerContent.setPadding(new Insets(10));
+        root.setCenter(centerContent);
+
+        // ==== Bas de page ====
+        Label bottomLabel = new Label("Ceci est un label de bas de page");
+        bottomLabel.setPadding(new Insets(10));
+        bottomLabel.setAlignment(Pos.CENTER);
+        VBox bottomContainer = new VBox(new Separator(), bottomLabel);
+        bottomContainer.setAlignment(Pos.CENTER);
+        root.setBottom(bottomContainer);
+
+        // ==== Configuration ====
+        primaryStage.setTitle("Fenêtre Logiciel");
+        primaryStage.setScene(scene);
+        primaryStage.show();
     }
 
     public static void main(String[] args) {
         launch(args);
-
     }
 }
-
-- 
GitLab


From d5d87f7d38c7e00f1bfb7c5fc94631dade1862c5 Mon Sep 17 00:00:00 2001
From: Mao Lesimple <mao.lesimple@etu.umontpellier.fr>
Date: Mon, 31 Mar 2025 15:00:46 +0200
Subject: [PATCH 2/4] exo 1

---
 .../java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java b/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
index 491ed65..b304de6 100644
--- a/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
+++ b/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
@@ -39,12 +39,12 @@ public class FenetreLogiciel extends Application {
         menuBar.getMenus().addAll(menuFile, menuEdit, menuHelp);
 
         // ==== Titre Centré ====
-        Label titleLabel = new Label("Premier exemple manipulant les conteneurs");
+        Label titleLabel = new Label();
         VBox titleBox = new VBox(titleLabel);
         titleBox.setAlignment(Pos.CENTER);
         titleBox.setPadding(new Insets(5));
 
-        VBox topContainer = new VBox(menuBar, new Separator(), titleBox, new Separator());
+        VBox topContainer = new VBox(menuBar, titleBox);
         root.setTop(topContainer);
 
         // ==== Panneau gauche ====
@@ -102,7 +102,7 @@ public class FenetreLogiciel extends Application {
         root.setBottom(bottomContainer);
 
         // ==== Configuration ====
-        primaryStage.setTitle("Fenêtre Logiciel");
+        primaryStage.setTitle("Premier exemple manipulant les conteneurs");
         primaryStage.setScene(scene);
         primaryStage.show();
     }
-- 
GitLab


From 1beafe235efdb69a212cc1baef5cfc5896fafc79 Mon Sep 17 00:00:00 2001
From: Mao Lesimple <mao.lesimple@etu.umontpellier.fr>
Date: Mon, 31 Mar 2025 15:21:16 +0200
Subject: [PATCH 3/4] exo 1

---
 .../java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java b/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
index b304de6..483aa1e 100644
--- a/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
+++ b/src/main/java/fr/umontpellier/iut/exercice1/FenetreLogiciel.java
@@ -25,20 +25,17 @@ public class FenetreLogiciel extends Application {
                 new MenuItem("New"),
                 new MenuItem("Open"),
                 new MenuItem("Save"),
-                new SeparatorMenuItem(),
                 new MenuItem("Close")
         );
 
         menuEdit.getItems().addAll(
                 new MenuItem("Cut"),
                 new MenuItem("Copy"),
-                new SeparatorMenuItem(),
                 new MenuItem("Paste")
         );
 
         menuBar.getMenus().addAll(menuFile, menuEdit, menuHelp);
 
-        // ==== Titre Centré ====
         Label titleLabel = new Label();
         VBox titleBox = new VBox(titleLabel);
         titleBox.setAlignment(Pos.CENTER);
@@ -47,7 +44,6 @@ public class FenetreLogiciel extends Application {
         VBox topContainer = new VBox(menuBar, titleBox);
         root.setTop(topContainer);
 
-        // ==== Panneau gauche ====
         VBox leftPanel = new VBox(10);
         leftPanel.setPadding(new Insets(10));
         Label lblButtons = new Label("Boutons :");
@@ -85,7 +81,7 @@ public class FenetreLogiciel extends Application {
 
         // ==== Séparateur vertical entre gauche et centre ====
         Separator verticalSeparator = new Separator(Orientation.VERTICAL);
-        verticalSeparator.setPadding(new Insets(10, 10, 10, 10));
+        verticalSeparator.setPadding(new Insets(0, 0, 0, 0));
 
         // ==== Centre (gauche + séparateur + formulaire) ====
         HBox centerContent = new HBox(leftPanel, verticalSeparator, form);
-- 
GitLab


From 62a8ee7233a6230aed35dd761ba27366e0ffc393 Mon Sep 17 00:00:00 2001
From: Mao Lesimple <mao.lesimple@etu.umontpellier.fr>
Date: Thu, 3 Apr 2025 15:16:07 +0200
Subject: [PATCH 4/4] push

---
 .../iut/exercice3/HandlerClasseExterne.java   | 14 +++
 .../iut/exercice3/HelloApplication.java       | 97 +++++++++++++++++++
 .../umontpellier/iut/exercice3/Palette.java   | 46 +++++++++
 3 files changed, 157 insertions(+)
 create mode 100644 src/main/java/fr/umontpellier/iut/exercice3/HandlerClasseExterne.java
 create mode 100644 src/main/java/fr/umontpellier/iut/exercice3/HelloApplication.java

diff --git a/src/main/java/fr/umontpellier/iut/exercice3/HandlerClasseExterne.java b/src/main/java/fr/umontpellier/iut/exercice3/HandlerClasseExterne.java
new file mode 100644
index 0000000..bcdf485
--- /dev/null
+++ b/src/main/java/fr/umontpellier/iut/exercice3/HandlerClasseExterne.java
@@ -0,0 +1,14 @@
+package fr.umontpellier.iut.exercice3;
+
+import javafx.event.Event;
+import javafx.event.EventHandler;
+import javafx.scene.control.Alert;
+
+public class HandlerClasseExterne implements EventHandler {
+
+    @Override
+    public void handle(Event event) {
+        new Alert(Alert.AlertType.INFORMATION,"Clic sur un bouton utilisant une classe externe").show();
+
+    }
+}
diff --git a/src/main/java/fr/umontpellier/iut/exercice3/HelloApplication.java b/src/main/java/fr/umontpellier/iut/exercice3/HelloApplication.java
new file mode 100644
index 0000000..e227c49
--- /dev/null
+++ b/src/main/java/fr/umontpellier/iut/exercice3/HelloApplication.java
@@ -0,0 +1,97 @@
+package fr.umontpellier.iut.exercice3;
+
+import javafx.application.Application;
+import javafx.event.Event;
+import javafx.event.EventHandler;
+import javafx.event.EventType;
+import javafx.fxml.FXMLLoader;
+import javafx.geometry.Pos;
+import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Button;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.layout.GridPane;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+public class HelloApplication extends Application {
+    @Override
+    public void start(Stage stage) throws IOException {
+
+        GridPane gp = new GridPane();
+
+        gp.add(new Button("clic classe interne"), 0, 0);
+        gp.add(new Button("clic classe externe"), 0, 1);
+        gp.add(new Button("clic function sans lambda"), 1, 0);
+        gp.add(new Button("clic function avec lambda expression"), 1, 1);
+        gp.add(new Button("clic méthode de convenance"), 2, 1);
+
+        //Classe interne (description en bas)
+        Button boutonClasseInterne = (Button) gp.getChildren().get(0);
+        boutonClasseInterne.addEventHandler(MouseEvent.MOUSE_CLICKED, new HandlerClasseInterne());
+
+        //Classe externe
+        Button boutonClasseExterne = (Button) gp.getChildren().get(1);
+        boutonClasseExterne.addEventHandler(MouseEvent.MOUSE_CLICKED, new HandlerClasseExterne());
+
+        //Gestionnaire créé sans lambda expression
+        EventHandler<MouseEvent> monHandler = new EventHandler<MouseEvent>() {
+            @Override
+            public void handle(MouseEvent mouseEvent) {
+                new Alert(Alert.AlertType.INFORMATION, "Clic sur un bouton utilisant un handler sans lambda ").show();
+            }
+        };
+        Button boutonSansLambda = (Button) gp.getChildren().get(2);
+        boutonSansLambda.addEventHandler(MouseEvent.MOUSE_CLICKED, monHandler);
+
+
+        //Gestionnaire créé avec lambda expression
+        EventHandler<MouseEvent> monHandlerAvecLambda = MouseEvent -> {
+            new Alert(Alert.AlertType.INFORMATION, "Clic sur un bouton utilisant un handler avec lambda").show();
+        };
+        Button boutonAvecLambda = (Button) gp.getChildren().get(3);
+        boutonAvecLambda.addEventHandler(MouseEvent.MOUSE_CLICKED, monHandlerAvecLambda);
+
+        //Gestionnaire avec les méthodes de convenance : setOnXXX (cf cours)
+        EventHandler<MouseEvent> monHandlerAvecConvenance = MouseEvent -> {
+            new Alert(Alert.AlertType.INFORMATION, "Clic sur un bouton utilisant un handler avec fonction de convenance").show();
+        };
+        Button boutonAvecConvenance = (Button) gp.getChildren().get(4);
+        boutonAvecConvenance.setOnMouseClicked(monHandlerAvecConvenance);
+
+
+        //alignement au centre
+        gp.setAlignment(Pos.CENTER);
+
+
+        Scene scene = new Scene(gp, 800, 600);
+        stage.setTitle("Gestionnaire événement");
+
+        stage.setScene(scene);
+        stage.show();
+    }
+
+    public void gestionClick(KeyEvent keyEvent) {
+        new Alert(Alert.AlertType.INFORMATION, "Clic sur un bouton utilisant une fonction de la classe");
+
+    }
+
+
+    public static void main(String[] args) {
+        launch();
+    }
+
+    public class HandlerClasseInterne implements EventHandler {
+
+        @Override
+        public void handle(Event event) {
+            new Alert(Alert.AlertType.INFORMATION, "Clic sur un bouton utilisant une classe interne").show();
+
+        }
+    }
+
+
+}
diff --git a/src/main/java/fr/umontpellier/iut/exercice3/Palette.java b/src/main/java/fr/umontpellier/iut/exercice3/Palette.java
index 772b29e..5985460 100644
--- a/src/main/java/fr/umontpellier/iut/exercice3/Palette.java
+++ b/src/main/java/fr/umontpellier/iut/exercice3/Palette.java
@@ -1,6 +1,8 @@
 package fr.umontpellier.iut.exercice3;
 
 import javafx.application.Application;
+import javafx.geometry.Pos;
+import javafx.scene.Scene;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
 import javafx.scene.layout.BorderPane;
@@ -25,7 +27,51 @@ public class Palette extends Application {
 
     @Override
     public void start(Stage primaryStage) {
+        root = new BorderPane();
+        panneau = new Pane();
+        label = new Label("");
+        panneau.setPrefSize(400, 300);
+        vert = new Button("Vert");
+        rouge = new Button("Rouge");
+        bleu = new Button("Bleu");
+        vert.setOnAction(e -> changerCouleur("green"));
+        rouge.setOnAction(e -> changerCouleur("red"));
+        bleu.setOnAction(e -> changerCouleur("blue"));
+        bas = new HBox(10, vert, rouge, bleu);
+        bas.setAlignment(Pos.CENTER);
+        bas.setStyle("-fx-padding: 10px;");
+        root.setCenter(panneau);
+        root.setBottom(bas);
+        root.setTop(label);
+        BorderPane.setAlignment(label, Pos.CENTER);
+        Scene scene = new Scene(root, 400, 400);
+        primaryStage.setTitle("Palette de Couleurs");
+        primaryStage.setScene(scene);
         primaryStage.show();
     }
+    private void changerCouleur(String couleur) {
+        String hexColor = switch (couleur) {
+            case "green" -> "#338718";
+            case "red" -> "#FF0000";
+            case "blue" -> "#0c7bcc";
+            default -> "#FFFFFF";
+        };
+        panneau.setStyle("-fx-background-color: " + hexColor + ";");
+
+        switch (couleur) {
+            case "green":
+                nbVert++;
+                label.setText("Vert: " + nbVert);
+                break;
+            case "red":
+                nbRouge++;
+                label.setText("Rouge: " + nbRouge);
+                break;
+            case "blue":
+                nbBleu++;
+                label.setText("Bleu: " + nbBleu);
+                break;
+        }
+    }
 }
 
-- 
GitLab