Vous êtes sur la page 1sur 5

Département Informatique

Sciences Mathématiques et Informatique (SMI/S5)


IHM
Prof. : M. BENADDY
A.U:2022/2023

Corrigé de l’examen de la session principale Nom & Prénom :………………………………


CNE :………………………………………….
durée : 1h30 N° d’examen :………………...……………….
NB : Le barème est donné à titre indicatif N° APOGEE : …………………………………

Note:………../20

1. Cocher les bonnes affirmations


□ Le mot clé static s'applique seulement aux méthodes.
☒ Le mot clé static s'applique aux variables et aux méthodes.
□ Le mot clé static s'applique aux variables seulement.
☒ Les variables d'instance sont des variables propres à un objet.
☒ Les variables d'instance sont des variables propres à un objet.
2. Quel est le mot clé qui permet de définir une constante en Java :
□ static □ abstact ☒ final
3. Que signifie chacune des lettres de l’abréviation WIMP :
W : Window…………………. I : Icon…………... M : Menu………………. P : Pointer………….

5. Quel est le gestionnaire de disposition par default de JPanel ?


☒ FlowLayout □ BorderLayout □ GridLayout
□ GridBagLayaout □ CardLayout □ Aucune de ces réponses n’est correcte
4. Quelle sont les différentes implémentations des Listeners :
☒ une classe indépendante ☒ la classe implémentant elle même l'interface
☒ une classe interne ☒ une classe interne anonyme.
5. Soit l’interface suivante :

Page 1/5
Soit le code suivant :

private JFrame fen;


private JPanel panel1, panel2, panel3, panel4;
private JLabel nomLbl, prenomLbl,ageLbl, mailLbl;
private JLabel diplomeLbl, loisirsLbl, preciserLbl;
private JTextField nomTxt, prenomTxt, ageTxt, mailTxt, precisTxt, loisirsTxt;
private JCheckBox bacTchk, licenceChk, deugChk, dutChk, autresChk;
private JList<String> loisirs;
private JTextArea textArea ;
private JButton ajouterBtn, supprimerBtn, creerBtn, quitterBtn;
private DefaultListModel<String> listModel;
private JScrollPane listScrollPane;

5.1. Quel gestionnaire de positionnement (Layout Manager) le plus approprié pour gérer l’emplacement des
étiquettes et champs textes (Prénom, Nom, Age, E-mail). Ecrire le code qui crée ces composants dans un
panel1 (Jpanel).

this.panel1 = new JPanel(new GridLayout(2,4));


this.prenomLbl = new JLabel("Prénom :", JLabel.RIGHT);
this.nomLbl = new JLabel("Nom :", JLabel.RIGHT);
this.ageLbl = new JLabel("Age :", JLabel.RIGHT);
this.mailLbl = new JLabel("E-mail", JLabel.RIGHT);
this.prenomTxt = new JTextField(15);
this.nomTxt = new JTextField(15);
this.ageTxt = new JTextField(15);
this.mailTxt = new JTextField(15);

this.panel1.add(prenomLbl);
this.panel1.add(prenomTxt);
this.panel1.add(nomLbl);
this.panel1.add(nomTxt);
this.panel1.add(ageLbl);
this.panel1.add(ageTxt);
this.panel1.add(mailLbl);
this.panel1.add(mailTxt);

5.2. Quel gestionnaire de positionnement (Layout Manager) le plus approprié pour gérer l’emplacement de
l’étiquette Diplômes et cases à cocher (Bac, Licence, Deug, DUT, Autre) et de l’étiquette Préciser et zone
texte. Ecrire le code qui crée ces composants dans un panel2 (Jpanel).

this.panel2 = new JPanel(new GridLayout(2,5));


this.diplomeLbl = new JLabel("Diplômes :", JLabel.RIGHT);
this.bacTchk = new JCheckBox("Bac");
this.licenceChk = new JCheckBox("Licence");
this.deugChk = new JCheckBox("Deug");
this.dutChk = new JCheckBox("DUT");
this.autresChk = new JCheckBox("Autre");
this.preciserLbl = new JLabel("Préciser :", JLabel.RIGHT);
this.precisTxt = new JTextField(15);
this.panel2.add(diplomeLbl);
this.panel2.add(bacTchk);
this.panel2.add(licenceChk);
this.panel2.add(deugChk);
this.panel2.add(dutChk);
this.panel2.add(new Jpanel());//Ajouter juste pour avoir les mêmes
emplacements
this.panel2.add(autresChk);
this.panel2.add(preciserLbl);
this.panel2.add(precisTxt);

Page 2/5
5.3. Quel gestionnaire de positionnement (Layout Manager) le plus approprié pour gérer l’emplacement de
l’étiquette Loisirs, les boutons (Ajouter et Supprimer) et la liste. Ecrire le code qui crée ces composants dans
un panel3 (Jpanel).

this.panel3 = new JPanel(new GridLayout(1,4));


this.loisirsLbl = new JLabel("Loisirs :", JLabel.RIGHT);
this.loisirsTxt = new JTextField(15);
JPanel paneBtn = new JPanel(new GridLayout(2,0));
this.ajouterBtn = new JButton("Ajouter");
this.supprimerBtn = new JButton("Supprimer");
paneBtn.add(ajouterBtn);
paneBtn.add(supprimerBtn);
listModel = new DefaultListModel<String>();
listModel.addElement("Sport");
listModel.addElement("Foot");
listModel.addElement("Musique");
listModel.addElement("Lecture");
this.loisirs = new JList<String>(listModel);
this.loisirs.setVisibleRowCount(2);
listScrollPane = new JScrollPane(loisirs);
this.panel3.add(loisirsLbl);
this.panel3.add(loisirsTxt);
this.panel3.add(paneBtn);
this.panel3.add(listScrollPane);

5.4. Quel gestionnaire de positionnement (Layout Manager) le plus approprié pour gérer l’emplacement de la
zone JTextArea, les boutons (Valider et Quitter). Ecrire le code qui crée ces composants dans un panel4
(Jpanel).

this.panel4 = new JPanel(new BorderLayout());


this.textArea = new JTextArea(5,20);
this.creerBtn = new JButton("Créer");
this.quitterBtn = new JButton("Quitter");
JPanel panBtncq = new JPanel(new FlowLayout());
panBtncq.add(creerBtn);
panBtncq.add(quitterBtn);
this.panel4.add(textArea, BorderLayout.NORTH);
this.panel4.add(panBtncq, BorderLayout.SOUTH);

5.5. Quel gestionnaire de positionnement (Layout Manager) le plus approprié pour gérer l’emplacement des
panels (panel1, panel2, panel3, panel4) à la fenêtre. Ecrire le code qui crée ces composants dans la fenêtre
principale.

this.fen.setLayout(new GridLayout(4,1));
this.fen.getContentPane().add(panel1);
this.fen.getContentPane().add(panel2);
this.fen.getContentPane().add(panel3);
this.fen.getContentPane().add(panel4);
this.fen.pack();
this.fen.setVisible(true);

5.6. Ecrire le code correspondant à l’événement clique sur le bouton Ajouter qui récupère le texte de la zone
texte et l’ajoute à la liste.

this.ajouterBtn.addActionListener(new ActionListener() {

Page 3/5
@Override
public void actionPerformed(ActionEvent e) {
listModel.addElement(loisirsTxt.getText());
}

});

5.7. Ecrire le code correspondant à l’événement clique sur le bouton Supprimer qui supprime l’élément
sélectionné de la liste.

this.supprimerBtn.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
listModel.remove(loisirs.getSelectedIndex());
}
});

5.8. Quel est le nom du composant qui permet de gérer les éléments de la liste.

L’interface ListModel dans notre cas nous avons utiliser DefaultListModel qui hérite de ListModel

5.9. Ecrire le code correspondant à l’événement clique sur le bouton Valider qui permet de récupérer toutes
les informations du formulaire et les ajoute à la zone JTextArea (chaque information dans une ligne).

this.creerBtn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

String diplomes ="Diplômes : ";


if(bacTchk.isSelected())
diplomes +=" Bac";
if(licenceChk.isSelected())
diplomes +=" Licence";
if(deugChk.isSelected())
diplomes +=" Deug";
if(dutChk.isSelected())
diplomes +=" DUT";
if(autresChk.isSelected())
diplomes +=" " + precisTxt.getText();
String loisirsData = "Loisirs : ";
for(int i=0;i<listModel.getSize();i++) {
loisirsData += listModel.get(i) + " ";
}
String text = "Prénom : " + prenomTxt.getText() + " Nom : "+
nomTxt.getText() + "\n"
+ "Age : "+ ageTxt.getText() + "\n E-mail : " +
mailTxt.getText() + "\n"
+ diplomes + "\n" + loisirsData;

textArea.setText(text);

});

5.10. Ecrire le code correspondant à l’événement clique sur le bouton Quitter qui permet fermer la fenêtre.

this.quitterBtn.addActionListener(new ActionListener() {

Page 4/5
@Override
public void actionPerformed(ActionEvent e) {
fen.dispose();
}

});

Page 5/5

Vous aimerez peut-être aussi