Gestion des étudiants avec Java Swing et les Collections
Objectifs :
- Création des interfaces graphiques avec la bibliothèque Swing.
- Développement d'une application de gestion simple avec Java Swing.
- Manipulation d'une collection.
- Manipulation des événements.
Énoncé :
On souhaite développer une application de gestion des étudiants, pour ce faire on va suivre les étapes suivantes :
Étape 1 : Développement de la couche métier
Dans cette étape on demande de créer la classe étudiant caractérisée par : id, nom, prénom, sexe et filière, dans le package "ma.projet.classes".
Dans cette classe :
- Respecter le principe d'encapsulation,
- Mettre deux constructeurs l'un en précisant l'id et l'autre sans le préciser. Dans ce 2ème cas l'id doit être auto-incrément.
Étape 2 : Développement de la couche accès aux données
Dans cette étape on demande de créer les méthodes de la mise à jour (ajouter, modifier, supprimer) et d'interrogation. Pour ce faire on demande de :
- Créer l'interface générique IDao avec les méthodes suivantes dans le package "ma.projet.dao":
- boolean create ( T o) : Méthode permettant d'ajouter un objet o de type T.
- boolean delete (T o) : Méthode permettant de supprimer un objet o de type T.
- boolean update (T o) : Méthode permettant de modifier un objet o de type T.
- T findById (int id) : Méthode permettant de renvoyer un objet dont id est passé en paramètre.
- List <T> findAll ( ) : Méthode permettant de renvoyer la liste des objets de type T.
- Créer la classe EtudiantService qui implémente l'interface IDao dans le package "ma.projet.service" et redéfinir toutes les méthodes de l'interfaces.
Étape 3 : Développement de la couche présentation
Dans cette étape on demande de créer les interfaces utilisateurs avec la bibliothèque Swing. Dans 1èr temps on demande de créer une MDI avec le menu suivant :
Au clic sur le menu Gestion -> Etudiant l'interface permettant de gérer les étudiants s'affiche (voir figure ci-dessous) :
Structure de projet
La classe Etudiant
package ma.projet.classes; /** * * @author lachgar */ public class Etudiant { private int id; private String nom; private String prenom; private String sexe; private String filiere; private static int comp; public Etudiant(int id, String nom, String prenom, String sexe, String filiere) { this.id = id; this.nom = nom; this.prenom = prenom; this.sexe = sexe; this.filiere = filiere; } public Etudiant(String nom, String prenom, String sexe, String filiere) { this.id = ++comp; this.nom = nom; this.prenom = prenom; this.sexe = sexe; this.filiere = filiere; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String getSexe() { return sexe; } public void setSexe(String sexe) { this.sexe = sexe; } public String getFiliere() { return filiere; } public void setFiliere(String filiere) { this.filiere = filiere; } }
L'interface IDao
package ma.projet.dao; import java.util.List; /** * * @author lachgar */ public interface IDao<T> { boolean create(T o); boolean delete(T o); boolean update(T o); List<T> findAll(); T findById(int id); }
La classe EtudiantService
package ma.projet.service; import java.util.ArrayList; import java.util.List; import ma.projet.classes.Etudiant; import ma.projet.dao.IDao; /** * * @author lachgar */ public class EtudiantService implements IDao<Etudiant> { private List<Etudiant> etudiants; public EtudiantService() { etudiants = new ArrayList<>(); } @Override public boolean create(Etudiant o) { return etudiants.add(o); } @Override public boolean delete(Etudiant o) { return etudiants.remove(o); } @Override public boolean update(Etudiant o) { for (int i = 0; i < etudiants.size(); i++) { if (etudiants.get(i).getId() == o.getId()) { etudiants.set(i, o); return true; } } return false; } @Override public List<Etudiant> findAll() { return etudiants; } @Override public Etudiant findById(int id) { for (Etudiant e : etudiants) { if (e.getId() == id) { return e; } } return null; } }
La classe Main : Menu (MDI)
Constructeur de la classe
public Main() { initComponents(); this.setTitle("Gestion des étudiants"); // Titre this.setLocationRelativeTo(null);// Afficher au centre de l'écran }
Au clic sur le sous menu
EtudiantForms ef = new EtudiantForms(); desktopPane.add(ef); ef.setVisible(true);
La classe EtudiantForm : Interface de gestion
La méthode permettant de charger les données dans le tableau
void load() { model.setRowCount(0); // Pour vider le tableau for (Etudiant e : es.findAll()) { model.addRow(new Object[]{e.getId(), e.getNom(), e.getPrenom(), e.getSexe(), e.getFiliere()}); } }
La méthode permettant d'initialiser (vider) les champs
void clear() { jTextField1.setText(""); jTextField2.setText(""); jRadioButton1.setSelected(false); jRadioButton2.setSelected(false); }
Au clic sur le bouton Ajouter
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String sexe = ""; if (jRadioButton1.isSelected()) { sexe = "Femme"; } if (jRadioButton2.isSelected()) { sexe = "Homme"; } if (es.create(new Etudiant(jTextField1.getText(), jTextField2.getText(), sexe, jComboBox1.getSelectedItem().toString()))) { JOptionPane.showMessageDialog(this, "Etudiant bien ajouter"); clear(); load(); } }
Au clic sur une ligne de tableau
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { id = Integer.parseInt(model.getValueAt(jTable1.getSelectedRow(), 0).toString()); jTextField1.setText(model.getValueAt(jTable1.getSelectedRow(), 1).toString()); jTextField2.setText(model.getValueAt(jTable1.getSelectedRow(), 2).toString()); jComboBox1.setSelectedItem(model.getValueAt(jTable1.getSelectedRow(), 4).toString()); if (model.getValueAt(jTable1.getSelectedRow(), 3).equals("Homme")) { jRadioButton2.setSelected(true); } else { jRadioButton1.setSelected(true); } }
Au clic sur le bouton Supprimer
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { es.delete(es.findById(id)); load(); clear(); }
Au clic sur le bouton Modifier
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { String sexe = ""; if (jRadioButton1.isSelected()) { sexe = "Femme"; } if (jRadioButton2.isSelected()) { sexe = "Homme"; } if (es.update(new Etudiant(id,jTextField1.getText(), jTextField2.getText(), sexe, jComboBox1.getSelectedItem().toString()))) { JOptionPane.showMessageDialog(this, "Etudiant bien ajouter"); clear(); load(); } }
Sélectionnez le fichier à afficher.
|