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