Objectif : Nous utilisons dans l'applet un objet de classe JList, un objet de classe JTextArea. et un objet de classe JButton. Notre applet doit rajouter dans le JTextArea l'élément sélectionné dans le JList (le click sur le JButton déclenchant la recopie). Nous reprenons un exemple déjà traité avec la bibiothèque Awt.
Travail à exécuter en Java
On vous donne le squelette général de l'applet en vous indiquant que le JButton doit posséder un écouteur sur l'événement actionPerformed (sensible au click de souris). Le JList est utilisé selon l'architecture MVC avec son objet modèle modeList de classe DefaultListModel, pour gérer les barres de défilement vertical et horizontal, le JTextArea est déposé sur un objet jScrollPane1 de classe JScrollPane et lui délègue la gestion de ces barres :
Démarrage
pour comparaison, le code de la version Awt est mentionné après le code Swing
état de l'applet Swing au départ code Swing correspondant this.setSize(321, 246);
this.getContentPane().setLayout(null);
jList1.setModel(modeList);
jList1.setBounds(14, 19, 115, 139);
jScrollPane1.setBounds(164, 18, 132, 138);
jButton1.setText("Ajouter à droite");
jButton1.setBounds(25, 186, 254, 28);
this.getContentPane().add(jList1);
this.getContentPane().add(jScrollPane1);
this.getContentPane().add(jButton1);
jScrollPane1.getViewport().add(jTextArea1);
modeList.addElement("un");
modeList.addElement("deux");
modeList.addElement("trois");
modeList.addElement("quatre");
modeList.addElement("cinq");état de l'applet Awt au départ code Awt correspondant this.setLayout(null);
button1.setLabel("Ajouter à droite");
button1.setBounds(18, 151, 230, 27);
textArea1.setBounds(138, 18, 108, 121);
this.add(list1);
this.add(textArea1);
this.add(button1);
list1.add("un");
list1.add("deux");
list1.add("trois");
list1.add("quatre");
list1.add("cinq");Click sur bouton "Ajouter à droite"
pour comparaison, le code de la version Awt est mentionné après le code Swing
état de l'applet Swing après un click sur le bouton
une fois qu'un élément a été sélectionné dans la liste de gauchecode Swing correspondant
au click sur le bouton : ajout de l'élément sélectionné dans la zone de textejTextArea1.append( (String)jList1.getSelectedValue( )+"\n"); état de l'applet Awt après un click sur le bouton une fois qu'un élément a été sélectionné dans la liste de gauche code Awt correspondant
au click sur le bouton : ajout de l'élément sélectionné dans la zone de textetextArea1.append( list1.getSelectedItem( ) + "\n"); Après plusieurs Click sur le bouton
pour comparaison, la gestion Awt est mentionné après la gestion Swing
état de l'applet Swing après plusieurs click sur le bouton informations sur le JTextArea de Swing
Nous notons que la classe JTextArea délègue la gestion des barres de défilement verticales et horizontales au JScrollPane. Dès que le nombre d'éléments ajoutés dans le JTextArea dépasse la fenêtre visible automatiquement le JScrollPane active la barre verticale.
état de l'applet Awt après plusieurs click sur le bouton informations sur le JTextArea de Awt Nous notons que la classe TextArea comprend en son sein la gestion des barres de défilement verticales et horizontales. Dès que le nombre d'éléments ajoutés dans le TextArea dépasse la fenêtre visible, automatiquement la barre verticale est activée. Construisez en recombinant les lignes de code Swing proposées, un programme complet d'applet correct.
2 - Proposition de solution Java :
Le code java de l'applet :
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;public class Applet_JList extends JApplet {
JScrollPane jScrollPane1 = new JScrollPane( );
JTextArea jTextArea1 = new JTextArea( );
JButton jButton1 = new JButton( );
DefaultListModel modeList = new DefaultListModel( );
JList jList1 = new JList( );
public void init() {
this.setSize(321, 246);
this.getContentPane().setLayout(null);
jList1.setModel(modeList);
jList1.setBounds(14, 19, 115, 139);
jScrollPane1.setBounds(164, 18, 132, 138);
jButton1.setText("Ajouter à droite");
jButton1.setBounds(25, 186, 254, 28);
jButton1.addActionListener(
new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
this.getContentPane().add(jList1);
this.getContentPane().add(jScrollPane1);
this.getContentPane().add(jButton1);
jScrollPane1.getViewport().add(jTextArea1);
modeList.addElement("un");
modeList.addElement("deux");
modeList.addElement("trois");
modeList.addElement("quatre");
modeList.addElement("cinq");
}
void jButton1_actionPerformed(ActionEvent e) {
jTextArea1.append((String)jList1.getSelectedValue()+"\n");
}
}
Le code HTML de la page appelant l'applet :
<HTML>
<HEAD>
<TITLE> Applet-Bonjour </TITLE>
</HEAD>
<BODY>
<p>Sortie de l'Applet-Bonjour :</p>
<APPLET CODE="Applet_JList.class" WIDTH=400 HEIGHT=200>
</APPLET>
</BODY>
</HTML>