Java : Applet avec objets Swing
JList et JTextArea

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

Même applet avec Awt

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 gauche
code Swing correspondant
au click sur le bouton : ajout de l'élément sélectionné dans la zone de  texte

jTextArea1.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  texte
textArea1.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.
 

Remonter 



 

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>

Remonter