TP Interface graphique Swing avec Java
Exercice 1 : Calculatrice simple (somme, soustraction, multiplication, division)
Objectif :
Créer une petite calculatrice graphique avec :
2 zones de texte pour les nombres
une liste déroulante pour choisir l’opération
un bouton "Calculer"
un label pour afficher le résultat
Code : [Link]
import [Link].*;
import [Link].*;
import [Link];
import [Link];
public class CalculatriceSimple extends JFrame {
private JTextField txtA, txtB;
private JComboBox<String> operations;
private JLabel lblResultat;
public CalculatriceSimple() {
setTitle("Calculatrice Simple");
setSize(350, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(5, 2, 5, 5));
add(new JLabel("Nombre 1 :"));
txtA = new JTextField();
add(txtA);
add(new JLabel("Nombre 2 :"));
txtB = new JTextField();
add(txtB);
add(new JLabel("Opération :"));
operations = new JComboBox<>(new String[]{"Somme", "Soustraction", "Multiplication",
"Division"});
add(operations);
JButton btnCalculer = new JButton("Calculer");
add(btnCalculer);
lblResultat = new JLabel("Résultat : ");
add(lblResultat);
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
double a = [Link]([Link]());
double b = [Link]([Link]());
double result = 0;
String op = (String) [Link]();
switch (op) {
case "Somme": result = a + b; break;
case "Soustraction": result = a - b; break;
case "Multiplication": result = a * b; break;
case "Division": result = b != 0 ? a / b : [Link]; break;
}
[Link]("Résultat : " + result);
} catch (NumberFormatException ex) {
[Link]("Entrée invalide !");
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new CalculatriceSimple();
}
}
Exercice 2 : Résolution d’équation du 2ᵉ degré
Objectif :
Créer une interface pour résoudre une équation de la forme
ax² + bx + c = 0
Saisir a, b, c → cliquer sur "Résoudre" → afficher les racines.
[Link]
import [Link].*;
import [Link].*;
import [Link];
import [Link];
public class EquationDeuxiemeDegre extends JFrame {
private JTextField txtA, txtB, txtC;
private JLabel lblResultat;
public EquationDeuxiemeDegre() {
setTitle("Équation du 2ème degré");
setSize(400, 250);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(5, 2, 5, 5));
add(new JLabel("a :"));
txtA = new JTextField();
add(txtA);
add(new JLabel("b :"));
txtB = new JTextField();
add(txtB);
add(new JLabel("c :"));
txtC = new JTextField();
add(txtC);
JButton btnResoudre = new JButton("Résoudre");
add(btnResoudre);
lblResultat = new JLabel("Résultat : ");
add(lblResultat);
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
double a = [Link]([Link]());
double b = [Link]([Link]());
double c = [Link]([Link]());
double delta = b * b - 4 * a * c;
if (a == 0) {
[Link]("Ce n'est pas une équation du 2e degré.");
return;
}
if (delta < 0)
[Link]("Aucune racine réelle (Δ = " + delta + ")");
else if (delta == 0)
[Link]("Une racine double : x = " + (-b / (2 * a)));
else {
double x1 = (-b - [Link](delta)) / (2 * a);
double x2 = (-b + [Link](delta)) / (2 * a);
[Link]([Link]("x1 = %.2f , x2 = %.2f", x1, x2));
}
} catch (NumberFormatException ex) {
[Link]("Entrée invalide !");
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new EquationDeuxiemeDegre();
}
}
Exercice 3 : Moyenne, Max et Min d’un tableau
Objectif :
L’utilisateur saisit une liste de nombres séparés par des virgules.
Au clic sur “Calculer”, l’app affiche :
o la moyenne
o le max
o le min
[Link]
import [Link].*;
import [Link].*;
import [Link];
import [Link];
import [Link];
public class StatsTableau extends JFrame {
private JTextField txtValeurs;
private JLabel lblResultat;
public StatsTableau() {
setTitle("Statistiques d'un Tableau");
setSize(400, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(3, 1, 5, 5));
txtValeurs = new JTextField();
[Link]("Exemple : 10,20,30,5");
add(txtValeurs);
JButton btnCalculer = new JButton("Calculer Moyenne / Max / Min");
add(btnCalculer);
lblResultat = new JLabel("Résultat : ");
add(lblResultat);
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
double[] tab = [Link]([Link]().split(","))
.mapToDouble(Double::parseDouble)
.toArray();
double somme = [Link](tab).sum();
double moyenne = somme / [Link];
double max = [Link](tab).max().orElse([Link]);
double min = [Link](tab).min().orElse([Link]);
[Link]([Link]("Moy=%.2f | Max=%.2f | Min=%.2f", moyenne, max,
min));
} catch (Exception ex) {
[Link]("Entrée invalide !");
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new StatsTableau();
}
}