logo

Crowdly

Votre réponse à la question 3 : Swing et Observer Voici une application qui gè...

✅ Перевірена відповідь на це питання доступна нижче. Наші рішення, перевірені спільнотою, допомагають краще зрозуміти матеріал.

Votre réponse à la question 3 : Swing et Observer

Voici une application qui gère la liste de contacts des étudiants du cours INF111.  L'application est programmée en Java-Swing, implémente le patron de conception Observer et respecte l'architecture MVC (Model-View-Controller). Cette application possède deux fonctionnalités: Ajouter et supprimer le contact d'un étudiant (nom et téléphone). Compléter le code afin que l'application fonctionne correctement.

Image failed to load

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;

// Interface de l'observateur :

interface

Observateur

{

void seMettreAJour();

}

// La classe Observable :

public class

Observable

{

private List<Observateur> observateurs = new ArrayList<>();

public void ajouterObservateur(Observateur observateur) {

observateurs.add(observateur);

}

private void notifierObservateurs() {

for (Observateur observateur : observateurs) {

observateur.

;

}

}

}

// La classe Model pour les étudiants joue le rôle de l'Observable

public class

EtudiantModel

{

private List<String> etudiants = new ArrayList<>();

public void ajouterEtudiant(String etudiant) {

etudiants.add(etudiant);

notifierObservateurs();

}

public void supprimerEtudiant(int selectedIndex) {

etudiants.remove(selectedIndex);

notifierObservateurs();

}

public List<String> getEtudiants() {

return

;

}

}

// La classe View pour afficher la liste des étudiants

public class

EtudiantView extends JFrame

{

private EtudiantModel model;

private DefaultListModel<String> etudiantListModel;

private JList<String> etudiantList;

public EtudiantView(EtudiantModel model) {

this.model = model;

model.ajouterObservateur(this);

this.

("Gestion des Étudiants");

this.setDefaultCloseOperation(JFrame.

);

this.setSize(600, 300);

this.setLocation(500,500);

this.setLayout(new BorderLayout());

etudiantListModel = new DefaultListModel<>();

etudiantList = new JList<>(

);

etudiantList.setBorder(BorderFactory.createTitledBorder("Liste des Étudiants"));

etudiantList.

(Color.LIGHT_GRAY);

this.add(etudiantList, BorderLayout.CENTER);

this.

;

}

@Override

public void

{

etudiantListModel.clear();

for (String etudiant : model.getEtudiants()) {

etudiantListModel.addElement(etudiant);

}

}

public JList<String> getEtudiantList() {

return

;}

}

// La classe Controleur pour gérer les interactions :

public class

EtudiantController

implements ActionListener {

private EtudiantModel model;

private JTextField nomEtudiantField;

private JTextField phoneEtudiantField;

private JButton ajouterButton, supprimerButton;

public EtudiantController(EtudiantModel model, EtudiantView view) {

this.model = model;

JPanel controlPanel = new JPanel(new

(4, 2));

// Champ de saisie pour le nom

nomEtudiantField = new JTextField();

controlPanel.add(new

("Nom de l'Étudiant:"));

controlPanel.add(nomEtudiantField);

// Champ de saisie pour le numéro de téléphone

phoneEtudiantField = new JTextField();

controlPanel.add(new

("Numéro de Téléphone:"));

controlPanel.add(phoneEtudiantField);

ajouterButton = new JButton("Ajouter un étudiant");

controlPanel.add(ajouterButton);

ajouterButton.

(this);

// Bouton pour supprimer un contact

supprimerButton = new JButton("Supprimer un étudiant");

controlPanel.add(supprimerButton);

supprimerButton.

(this);

view.add(

, BorderLayout.NORTH);

}

@Override

public void

(ActionEvent evt) {

Object source = evt.getSource();

if (source==ajouterButton) {

String nomEtudiant = nomEtudiantField.getText();

String phoneEtudiant = phoneEtudiantField.getText();

if (!nomEtudiant.isEmpty() && !phoneEtudiant.isEmpty()) {

model.ajouterEtudiant(nomEtudiant + " - " + phoneEtudiant);

nomEtudiantField.setText("");

phoneEtudiantField.setText("");

}

}

else if (source==supprimerButton) {

int selectedIndex = view.getEtudiantList().getSelectedIndex();

if (selectedIndex != -1) {

model.supprimerEtudiant(selectedIndex);

}

}

}

}

// Classe principale pour démarrer l'application

public class

GestionEtudiantstApp

{

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {

EtudiantModel model = new EtudiantModel();

EtudiantView view = new EtudiantView(model);

new EtudiantController(model, view);

});

}

}

Більше питань подібних до цього

Хочете миттєвий доступ до всіх перевірених відповідей на ena.etsmtl.ca?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!