From bac2821aef65509dd1325d040fbe82dd2e1c1d48 Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 21 Sep 2026 14:10:06 +0200 Subject: [PATCH 1/5] Merged from main (views) --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d83324 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/ProjetJava/target/ -- GitLab From 14633ba2d69c8e205eba7fe7e5ff92882a31e3ba Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 21 Sep 2026 16:29:31 +0200 Subject: [PATCH 2/5] Fin de lundi, avance sur calcul. --- .../src/main/java/services/CalculService.java | 44 ++++++++++ ProjetJava/src/main/java/views/Calcul.java | 80 +++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 ProjetJava/src/main/java/services/CalculService.java create mode 100644 ProjetJava/src/main/java/views/Calcul.java diff --git a/ProjetJava/src/main/java/services/CalculService.java b/ProjetJava/src/main/java/services/CalculService.java new file mode 100644 index 0000000..b9a30af --- /dev/null +++ b/ProjetJava/src/main/java/services/CalculService.java @@ -0,0 +1,44 @@ +package services; + +import views.Calcul; + +/** + * + * @author stag + */ +public class CalculService { + + private int result; + + public int addition(Calcul c) { + result = c.getOperand1() + c.getOperand2(); + return result; + } + + public int subtraction(Calcul c) { + result = c.getOperand1() - c.getOperand2(); + return result; + } + + public int multiplication(Calcul c) { + result = c.getOperand1() * c.getOperand2(); + return result; + } + + private int generateCalcul(int level) { + Calcul c = new Calcul(level); + + if (level == 1) { + System.out.println(c); + + result = addition(c); + System.out.println(result); + } + return result; + } + + public static void main(String[] args) { + CalculService cs = new CalculService(); + cs.generateCalcul(1); + } +} diff --git a/ProjetJava/src/main/java/views/Calcul.java b/ProjetJava/src/main/java/views/Calcul.java new file mode 100644 index 0000000..70aa87b --- /dev/null +++ b/ProjetJava/src/main/java/views/Calcul.java @@ -0,0 +1,80 @@ +package views; + +import java.util.concurrent.ThreadLocalRandom; + +/** + * + * @author stag + */ +public class Calcul { + + int level; + int operand1; + int operand2; + + public int getLevel() { + return level; + } + + public int getOperand1() { + return operand1; + } + + public int getOperand2() { + return operand2; + } + + public String getOperator() { + return operator; + } + String operator; + + public Calcul(int level) { + this.level = level; + + // Donne une valeur entre 1 et 9 + operand1 = ThreadLocalRandom.current().nextInt(1, 10); + operand2 = ThreadLocalRandom.current().nextInt(1, 10); + + // On échange les valeur si nécessaire pour éviter les nb négatifs + if (operand1 < operand2) { + int tempNb = operand1; + operand1 = operand2; + operand2 = tempNb; + } + +// // Génére 0 ou 1, attribue - ou + à l'opérateur +// int randOperator = ThreadLocalRandom.current().nextInt(0, 2); +// switch (randOperator) { +// case 0: +// operator = "-"; +// break; +// case 1: +// operator = "+"; +// break; +// } +// +// if (randOperator == 1) { +// result = operand1 + operand2; +// } else { +// result = operand1 - operand2; +// } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("Calcul{"); + sb.append("level=").append(level); + sb.append(", operand1=").append(operand1); + sb.append(", operand2=").append(operand2); + sb.append('}'); + return sb.toString(); + } + + public static void main(String[] args) { + Calcul calcul = new Calcul(1); + + System.out.println(calcul); + } +} -- GitLab From faeba5d4c0af1c4e30547db18b2519191e9f614c Mon Sep 17 00:00:00 2001 From: Adrien Date: Tue, 22 Sep 2026 09:49:38 +0200 Subject: [PATCH 3/5] =?UTF-8?q?Logique=20de=20calcul=20termin=C3=A9e=20et?= =?UTF-8?q?=20refactoring.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjetJava/src/main/java/models/Calcul.java | 85 +++++++++++++++++++ .../src/main/java/services/CalculService.java | 60 +++++++++---- ProjetJava/src/main/java/views/Calcul.java | 80 ----------------- 3 files changed, 129 insertions(+), 96 deletions(-) create mode 100644 ProjetJava/src/main/java/models/Calcul.java delete mode 100644 ProjetJava/src/main/java/views/Calcul.java diff --git a/ProjetJava/src/main/java/models/Calcul.java b/ProjetJava/src/main/java/models/Calcul.java new file mode 100644 index 0000000..c8c601f --- /dev/null +++ b/ProjetJava/src/main/java/models/Calcul.java @@ -0,0 +1,85 @@ +package models; + +import java.util.concurrent.ThreadLocalRandom; + +/** + * + * @author Adrien + */ +public class Calcul { + + int level; + int operand1; + int operand2; + int operator; + + public Calcul(int level) { + if (level == 1) { + this.level = level; + generateOperator(level); + + // Donne une valeur entre 1 et 9 + operand1 = ThreadLocalRandom.current().nextInt(1, 10); + operand2 = ThreadLocalRandom.current().nextInt(1, 10); + + // On échange les valeur si nécessaire pour éviter les nb négatifs + if (operand1 < operand2) { + int tempNb = operand1; + operand1 = operand2; + operand2 = tempNb; + } + } else { // Niveau 2 + this.level = level; + generateOperator(level); + + // Ici on gère les multiplications + if (operator == 2) { + // Donne une valeur entre 1 et 9 + operand1 = ThreadLocalRandom.current().nextInt(1, 10); + operand2 = ThreadLocalRandom.current().nextInt(1, 10); + } else { + // Sinon pour les additions et soustractions + // Donne une valeur entre 1 et 999 + operand1 = ThreadLocalRandom.current().nextInt(1, 1000); + operand2 = ThreadLocalRandom.current().nextInt(1, 1000); + } + } + } + + // Génére 0 , 1, ou 2 pour - , + ou * + public final void generateOperator(int level) { + if (level == 1) { + operator = ThreadLocalRandom.current().nextInt(0, 2); + } else { + operator = ThreadLocalRandom.current().nextInt(0, 3); + } + } + + public int getLevel() { + return level; + } + + public int getOperand1() { + return operand1; + } + + public int getOperand2() { + return operand2; + } + + public int getOperator() { + return operator; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("Calcul{"); + sb.append("level=").append(level); + sb.append(", operand1=").append(operand1); + sb.append(", operand2=").append(operand2); + sb.append(", operator=").append(operator); + sb.append('}'); + return sb.toString(); + } +} diff --git a/ProjetJava/src/main/java/services/CalculService.java b/ProjetJava/src/main/java/services/CalculService.java index b9a30af..34711f9 100644 --- a/ProjetJava/src/main/java/services/CalculService.java +++ b/ProjetJava/src/main/java/services/CalculService.java @@ -1,44 +1,72 @@ package services; -import views.Calcul; +import models.Calcul; /** * - * @author stag + * @author Adrien */ public class CalculService { - - private int result; - + private int result; + public int addition(Calcul c) { result = c.getOperand1() + c.getOperand2(); return result; } - + public int subtraction(Calcul c) { result = c.getOperand1() - c.getOperand2(); return result; } - + public int multiplication(Calcul c) { result = c.getOperand1() * c.getOperand2(); return result; } - + private int generateCalcul(int level) { Calcul c = new Calcul(level); - + if (level == 1) { - System.out.println(c); - - result = addition(c); - System.out.println(result); + if (c.getOperator() == 0) { + System.out.println(c); + result = addition(c); + System.out.println("Résultat : " + result); + } else { + System.out.println(c); + result = subtraction(c); + System.out.println("Résultat : " + result); + } + } else { + switch (c.getOperator()) { + case 0: + System.out.println(c); + result = addition(c); + System.out.println("Résultat : " + result); + break; + case 1: + System.out.println(c); + result = subtraction(c); + System.out.println("Résultat : " + result); + break; + case 2: + System.out.println(c); + result = multiplication(c); + System.out.println("Résultat : " + result); + break; + } } return result; } - public static void main(String[] args) { - CalculService cs = new CalculService(); - cs.generateCalcul(1); + +// +// public static void main(String[] args) { +// CalculService cs = new CalculService(); +// cs.generateCalcul(2); +// } + + public int getResult() { + return result; } } diff --git a/ProjetJava/src/main/java/views/Calcul.java b/ProjetJava/src/main/java/views/Calcul.java deleted file mode 100644 index 70aa87b..0000000 --- a/ProjetJava/src/main/java/views/Calcul.java +++ /dev/null @@ -1,80 +0,0 @@ -package views; - -import java.util.concurrent.ThreadLocalRandom; - -/** - * - * @author stag - */ -public class Calcul { - - int level; - int operand1; - int operand2; - - public int getLevel() { - return level; - } - - public int getOperand1() { - return operand1; - } - - public int getOperand2() { - return operand2; - } - - public String getOperator() { - return operator; - } - String operator; - - public Calcul(int level) { - this.level = level; - - // Donne une valeur entre 1 et 9 - operand1 = ThreadLocalRandom.current().nextInt(1, 10); - operand2 = ThreadLocalRandom.current().nextInt(1, 10); - - // On échange les valeur si nécessaire pour éviter les nb négatifs - if (operand1 < operand2) { - int tempNb = operand1; - operand1 = operand2; - operand2 = tempNb; - } - -// // Génére 0 ou 1, attribue - ou + à l'opérateur -// int randOperator = ThreadLocalRandom.current().nextInt(0, 2); -// switch (randOperator) { -// case 0: -// operator = "-"; -// break; -// case 1: -// operator = "+"; -// break; -// } -// -// if (randOperator == 1) { -// result = operand1 + operand2; -// } else { -// result = operand1 - operand2; -// } - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("Calcul{"); - sb.append("level=").append(level); - sb.append(", operand1=").append(operand1); - sb.append(", operand2=").append(operand2); - sb.append('}'); - return sb.toString(); - } - - public static void main(String[] args) { - Calcul calcul = new Calcul(1); - - System.out.println(calcul); - } -} -- GitLab From f8a77d97f0df88438174e53e0634865c6a87e5ad Mon Sep 17 00:00:00 2001 From: Adrien Date: Tue, 22 Sep 2026 16:29:38 +0200 Subject: [PATCH 4/5] Fin mardi, calcul presque fini --- ProjetJava/src/main/java/models/Calcul.java | 17 +++ .../src/main/java/services/CalculService.java | 21 +-- .../src/main/java/views/CalculPanel.java | 144 ++++++++++++++++++ .../src/main/java/views/PrimaryWindow.java | 6 +- 4 files changed, 165 insertions(+), 23 deletions(-) create mode 100644 ProjetJava/src/main/java/views/CalculPanel.java diff --git a/ProjetJava/src/main/java/models/Calcul.java b/ProjetJava/src/main/java/models/Calcul.java index c8c601f..5b439d5 100644 --- a/ProjetJava/src/main/java/models/Calcul.java +++ b/ProjetJava/src/main/java/models/Calcul.java @@ -55,6 +55,23 @@ public class Calcul { } } + public final String showOperator() { + String cOperator = ""; + + switch (operator) { + case 0: + cOperator = "+"; + break; + case 1: + cOperator = "-"; + break; + case 2: + cOperator = "x"; + break; + } + return cOperator; + } + public int getLevel() { return level; } diff --git a/ProjetJava/src/main/java/services/CalculService.java b/ProjetJava/src/main/java/services/CalculService.java index 34711f9..116e38e 100644 --- a/ProjetJava/src/main/java/services/CalculService.java +++ b/ProjetJava/src/main/java/services/CalculService.java @@ -24,47 +24,30 @@ public class CalculService { return result; } - private int generateCalcul(int level) { + public Calcul generateCalcul(int level) { Calcul c = new Calcul(level); if (level == 1) { if (c.getOperator() == 0) { - System.out.println(c); result = addition(c); - System.out.println("Résultat : " + result); } else { - System.out.println(c); result = subtraction(c); - System.out.println("Résultat : " + result); } } else { switch (c.getOperator()) { case 0: - System.out.println(c); result = addition(c); - System.out.println("Résultat : " + result); break; case 1: - System.out.println(c); result = subtraction(c); - System.out.println("Résultat : " + result); break; case 2: - System.out.println(c); result = multiplication(c); - System.out.println("Résultat : " + result); break; } } - return result; + return c; } - - -// -// public static void main(String[] args) { -// CalculService cs = new CalculService(); -// cs.generateCalcul(2); -// } public int getResult() { return result; diff --git a/ProjetJava/src/main/java/views/CalculPanel.java b/ProjetJava/src/main/java/views/CalculPanel.java new file mode 100644 index 0000000..2b1af30 --- /dev/null +++ b/ProjetJava/src/main/java/views/CalculPanel.java @@ -0,0 +1,144 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package views; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import models.Calcul; +import services.CalculService; + +/** + * + * @author stag + */ +public class CalculPanel extends JPanel { + + // Initialiser le calcul + private CalculService cs = new CalculService(); + private Calcul calcul = cs.generateCalcul(1); + + public CalculPanel() { + // Layout principal + setLayout(new BorderLayout()); + + // Une grille de 2 lignes et 1 colonne + JPanel container = new JPanel(new GridLayout(2, 1, 0, 30)); + + // Affichage de la question + JPanel panelCalcul = new JPanel(new FlowLayout(FlowLayout.CENTER)); + JLabel labelCalcul = new JLabel( + calcul.getOperand1() + " " + + calcul.showOperator() + " " + + calcul.getOperand2() + " = " + ); + + labelCalcul.setFont(new Font("Arial", Font.BOLD, 36)); + panelCalcul.add(labelCalcul); + + // Affichage du label et champ de saisie + JPanel panelResponse = new JPanel(new FlowLayout(FlowLayout.CENTER)); + JLabel labelReponse = new JLabel("Votre réponse : "); + labelReponse.setFont(new Font("Arial", Font.PLAIN, 16)); + JTextField textResponse = new JTextField(20); + textResponse.setFont(new Font("Arial", Font.PLAIN, 16)); + + panelResponse.add(labelReponse); + panelResponse.add(textResponse); + + // Texte de vérif + JLabel labelVerif = new JLabel(""); + panelResponse.add(labelVerif); + + // Ajout des deux lignes dans la grille + container.add(panelCalcul); + container.add(panelResponse); + + // Mettre le container dans un container centré + JPanel containerCenter = new JPanel(new GridBagLayout()); + containerCenter.add(container); + + // Bouton (Partie SUD) + JPanel panelSud = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 20)); + JButton btnCheck = new JButton("Vérifier"); + Color lightGreen = new Color(180, 230, 180); + Color lightRed = new Color(245, 190, 190); + + // Vérifie la valeur entrée au click + btnCheck.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int answer = Integer.parseInt(textResponse.getText()); + if (answer == cs.getResult()) { + labelVerif.setText("Vrai !"); + textResponse.setBackground(lightGreen); + textResponse.setBorder(BorderFactory.createLineBorder(Color.green)); + } else { + labelVerif.setText("Faux !"); + textResponse.setBackground(lightRed); + textResponse.setBorder(BorderFactory.createLineBorder(Color.RED)); + } + } + }); + + // Couleur + btnCheck.setBackground(new Color(76, 128, 45)); + // Couleur texte + btnCheck.setForeground(Color.WHITE); + // Taille (horizontal, vertical) + btnCheck.setPreferredSize(new Dimension(200, 30)); + + JButton btnSolution = new JButton("Solution"); + btnSolution.setPreferredSize(new Dimension(200, 30)); + + // Insère le résultat en cliquant sur le bouton solution + btnSolution.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + textResponse.setText(String.valueOf(cs.getResult())); + } + }); + + JButton btnNewCalcul = new JButton("Nouveau calcul"); + btnNewCalcul.setPreferredSize(new Dimension(200, 30)); + + btnNewCalcul.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + calcul = cs.generateCalcul(1); + labelCalcul.setText( + calcul.getOperand1() + " " + + calcul.showOperator() + " " + + calcul.getOperand2() + " = " + ); + + // Remet à 0 les réponses + textResponse.setText(""); + labelVerif.setText(""); + textResponse.setBackground(Color.WHITE); + textResponse.setBorder(null); + } + }); + + panelSud.add(btnCheck); + panelSud.add(btnSolution); + panelSud.add(btnNewCalcul); + + // Assemblage + add(containerCenter, BorderLayout.CENTER); + add(panelSud, BorderLayout.SOUTH); + } +} diff --git a/ProjetJava/src/main/java/views/PrimaryWindow.java b/ProjetJava/src/main/java/views/PrimaryWindow.java index dc912b8..a57de20 100644 --- a/ProjetJava/src/main/java/views/PrimaryWindow.java +++ b/ProjetJava/src/main/java/views/PrimaryWindow.java @@ -64,9 +64,7 @@ public class PrimaryWindow extends JFrame { panelDessin.add(new JLabel("Ardoise")); // Calcul - JPanel panelCalcul = new JPanel(); - panelCalcul.setBackground(new Color(230, 240, 255)); - panelCalcul.add(new JLabel("Exercices de calcul")); + CalculPanel p = new CalculPanel(); // Question JPanel panelQuestion = new JPanel(); @@ -75,7 +73,7 @@ public class PrimaryWindow extends JFrame { // Ajout des onglets visibles tabbedPane.addTab("Dessin", panelDessin); - tabbedPane.addTab("Calcul", panelCalcul); + tabbedPane.addTab("Calcul", p); tabbedPane.addTab("Question", panelQuestion); /* -- GitLab From 7ccd3e5d61ef556b07753937601710d7265e539a Mon Sep 17 00:00:00 2001 From: Adrien Date: Wed, 23 Sep 2026 16:35:55 +0200 Subject: [PATCH 5/5] =?UTF-8?q?Gestion=20d'exception,=20Calcul=20g=C3=A8re?= =?UTF-8?q?=20son=20r=C3=A9sultat,=20travail=20UI=20sur=20le=20panel.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjetJava/src/main/java/models/Calcul.java | 33 +++++-- .../src/main/java/services/CalculService.java | 41 ++++----- .../src/main/java/views/CalculPanel.java | 91 +++++++++++-------- 3 files changed, 95 insertions(+), 70 deletions(-) diff --git a/ProjetJava/src/main/java/models/Calcul.java b/ProjetJava/src/main/java/models/Calcul.java index 5b439d5..4f206bc 100644 --- a/ProjetJava/src/main/java/models/Calcul.java +++ b/ProjetJava/src/main/java/models/Calcul.java @@ -8,10 +8,11 @@ import java.util.concurrent.ThreadLocalRandom; */ public class Calcul { - int level; - int operand1; - int operand2; - int operator; + private int level; + private int operand1; + private int operand2; + private int operator; + private int result; public Calcul(int level) { if (level == 1) { @@ -22,7 +23,7 @@ public class Calcul { operand1 = ThreadLocalRandom.current().nextInt(1, 10); operand2 = ThreadLocalRandom.current().nextInt(1, 10); - // On échange les valeur si nécessaire pour éviter les nb négatifs + // On échange les valeur si nécessaire pour éviter les résultats négatifs if (operand1 < operand2) { int tempNb = operand1; operand1 = operand2; @@ -55,21 +56,22 @@ public class Calcul { } } + // Similaire au getter, mais retourne une chaine pour l'affichage public final String showOperator() { - String cOperator = ""; + String stringOperator = ""; switch (operator) { case 0: - cOperator = "+"; + stringOperator = "+"; break; case 1: - cOperator = "-"; + stringOperator = "-"; break; case 2: - cOperator = "x"; + stringOperator = "x"; break; } - return cOperator; + return stringOperator; } public int getLevel() { @@ -88,6 +90,14 @@ public class Calcul { return operator; } + public int getResult() { + return result; + } + + public void setResult(int result) { + this.result = result; + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -96,7 +106,10 @@ public class Calcul { sb.append(", operand1=").append(operand1); sb.append(", operand2=").append(operand2); sb.append(", operator=").append(operator); + sb.append(", result=").append(result); sb.append('}'); return sb.toString(); } + + } diff --git a/ProjetJava/src/main/java/services/CalculService.java b/ProjetJava/src/main/java/services/CalculService.java index 116e38e..c0f891f 100644 --- a/ProjetJava/src/main/java/services/CalculService.java +++ b/ProjetJava/src/main/java/services/CalculService.java @@ -7,49 +7,44 @@ import models.Calcul; * @author Adrien */ public class CalculService { - private int result; - public int addition(Calcul c) { - result = c.getOperand1() + c.getOperand2(); - return result; + public void addition(Calcul newCalcul) { + int result = newCalcul.getOperand1() + newCalcul.getOperand2(); + newCalcul.setResult(result); } - public int subtraction(Calcul c) { - result = c.getOperand1() - c.getOperand2(); - return result; + public void subtraction(Calcul newCalcul) { + int result = newCalcul.getOperand1() - newCalcul.getOperand2(); + newCalcul.setResult(result); } - public int multiplication(Calcul c) { - result = c.getOperand1() * c.getOperand2(); - return result; + public void multiplication(Calcul newCalcul) { + int result = newCalcul.getOperand1() * newCalcul.getOperand2(); + newCalcul.setResult(result); } public Calcul generateCalcul(int level) { - Calcul c = new Calcul(level); + Calcul newCalcul = new Calcul(level); if (level == 1) { - if (c.getOperator() == 0) { - result = addition(c); + if (newCalcul.getOperator() == 0) { + addition(newCalcul); } else { - result = subtraction(c); + subtraction(newCalcul); } } else { - switch (c.getOperator()) { + switch (newCalcul.getOperator()) { case 0: - result = addition(c); + addition(newCalcul); break; case 1: - result = subtraction(c); + subtraction(newCalcul); break; case 2: - result = multiplication(c); + multiplication(newCalcul); break; } } - return c; - } - - public int getResult() { - return result; + return newCalcul; } } diff --git a/ProjetJava/src/main/java/views/CalculPanel.java b/ProjetJava/src/main/java/views/CalculPanel.java index 2b1af30..0c3c02e 100644 --- a/ProjetJava/src/main/java/views/CalculPanel.java +++ b/ProjetJava/src/main/java/views/CalculPanel.java @@ -29,9 +29,13 @@ public class CalculPanel extends JPanel { // Initialiser le calcul private CalculService cs = new CalculService(); - private Calcul calcul = cs.generateCalcul(1); - + private Calcul calcul; + + Color lightGreen = new Color(180, 230, 180); + Color lightRed = new Color(245, 190, 190); + public CalculPanel() { + this.calcul = cs.generateCalcul(1); // Layout principal setLayout(new BorderLayout()); @@ -40,11 +44,8 @@ public class CalculPanel extends JPanel { // Affichage de la question JPanel panelCalcul = new JPanel(new FlowLayout(FlowLayout.CENTER)); - JLabel labelCalcul = new JLabel( - calcul.getOperand1() + " " - + calcul.showOperator() + " " - + calcul.getOperand2() + " = " - ); + JLabel labelCalcul = new JLabel(); + showCalcul(calcul, labelCalcul); labelCalcul.setFont(new Font("Arial", Font.BOLD, 36)); panelCalcul.add(labelCalcul); @@ -74,25 +75,12 @@ public class CalculPanel extends JPanel { // Bouton (Partie SUD) JPanel panelSud = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 20)); JButton btnCheck = new JButton("Vérifier"); - Color lightGreen = new Color(180, 230, 180); - Color lightRed = new Color(245, 190, 190); - // Vérifie la valeur entrée au click - btnCheck.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - int answer = Integer.parseInt(textResponse.getText()); - if (answer == cs.getResult()) { - labelVerif.setText("Vrai !"); - textResponse.setBackground(lightGreen); - textResponse.setBorder(BorderFactory.createLineBorder(Color.green)); - } else { - labelVerif.setText("Faux !"); - textResponse.setBackground(lightRed); - textResponse.setBorder(BorderFactory.createLineBorder(Color.RED)); - } - } - }); + // Vérifie la valeur entrée au click du bouton + btnCheck.addActionListener(e -> checkAnswer(textResponse, labelVerif)); + + //Vérifie la valeur après la touche entrée + textResponse.addActionListener(e -> checkAnswer(textResponse, labelVerif)); // Couleur btnCheck.setBackground(new Color(76, 128, 45)); @@ -108,7 +96,8 @@ public class CalculPanel extends JPanel { btnSolution.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - textResponse.setText(String.valueOf(cs.getResult())); + clearResponse(textResponse, labelVerif); + textResponse.setText(String.valueOf(calcul.getResult())); } }); @@ -119,17 +108,10 @@ public class CalculPanel extends JPanel { @Override public void actionPerformed(ActionEvent e) { calcul = cs.generateCalcul(1); - labelCalcul.setText( - calcul.getOperand1() + " " - + calcul.showOperator() + " " - + calcul.getOperand2() + " = " - ); - - // Remet à 0 les réponses - textResponse.setText(""); - labelVerif.setText(""); - textResponse.setBackground(Color.WHITE); - textResponse.setBorder(null); + showCalcul(calcul, labelCalcul); + + // Remet les réponses à 0 + clearResponse(textResponse, labelVerif); } }); @@ -141,4 +123,39 @@ public class CalculPanel extends JPanel { add(containerCenter, BorderLayout.CENTER); add(panelSud, BorderLayout.SOUTH); } + + private void checkAnswer(JTextField t, JLabel l) { + try { + int answer = Integer.parseInt(t.getText()); + + if (answer == calcul.getResult()) { + l.setText("Vrai !"); + t.setBackground(lightGreen); + t.setBorder(BorderFactory.createLineBorder(Color.green)); + } else { + l.setText("Faux !"); + t.setBackground(lightRed); + t.setBorder(BorderFactory.createLineBorder(Color.RED)); + } + + } catch (NumberFormatException ex) { + l.setText("Veuillez entrer un nombre !"); + t.setBackground(lightRed); + t.setBorder(BorderFactory.createLineBorder(Color.RED)); + } + } + + public final void showCalcul(Calcul c, JLabel l) { + l.setText(c.getOperand1() + " " + + c.showOperator() + " " + + c.getOperand2() + " = "); + } + + public final void clearResponse(JTextField t, JLabel l) { + // Remet les réponses à 0 + t.setText(""); + l.setText(""); + t.setBackground(Color.WHITE); + t.setBorder(null); + } } -- GitLab