Java : Applet avec objets Swing
JLabel et JButton

Objectif : Nous utilisons dans l'applet de classe JApplet, deux objets de classe  JButton et un objet de classe  JLabel. Notre applet affiche un texte dans la JLabel et la couleur du fond de cette JLabel change selon que l'on clique sur l'un ou l'autre des JButton. 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 les deux JButton doivent posséder chacun un écouteur sur l'événement actionPerformed (sensible au click de souris):
 

 import java.awt.*;
 import java.awt.event.*;
 import java.applet.*;
 import javax.swing.*;


 

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
jLabel1.setOpaque(true);
jLabel1.setText("ceci est un exemple");
jLabel1.setBounds(20, 71, 260, 17);
jButton1.setText("couleur bleue");
jButton1.setBounds(20, 135, 129, 27);
jButton2.setText("couleur jaune");
jButton2.setBounds(162, 136, 128, 27);
this.getContentPane().setBackground(Color.white);
this.getContentPane().setLayout(null);
this.getContentPane().add(jLabel1);
this.getContentPane().add(jButton1);
this.getContentPane().add(jButton2);

 

état de l'applet Awt au départ code Awt correspondant
this.setLayout(null);
label1.setBackground(Color.lightGray);
label1.setText("Ceci est un exemple");
label1.setBounds(25, 32, 168, 17);
button1.setLabel("couleur bleue");
button1.setBounds(10, 110, 117, 26);
button2.setLabel("couleur jaune");
button2.setBounds(130, 110, 117, 25);
this.add(label1);
this.add(button1);
this.add(button2);

Click sur bouton "couleur bleue"
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
"couleur bleue"
code Swing correspondant
au click sur button1

jLabel1.setText("Bouton bleu activé");
jLabel1.setBackground(Color.cyan);
état de l'applet Awt après un click sur le bouton
"couleur bleue"
code Awt correspondant
au click sur button1
label1.setText("Bouton bleu activé");
label1.setBackground(Color.cyan);

Click sur bouton "couleur jaune"
état de l'applet Swing après un click sur le bouton
"couleur jaune"
code Swing correspondant
au click sur le bouton

jLabel1.setText("Bouton jaune activé");
jLabel1.setBackground(Color.yellow);
état de l'applet Awt après un click sur le bouton
"couleur jaune"
code Awt correspondant
au click sur le bouton
label1.setText("Bouton jaune activé");
label1.setBackground(Color.yellow);

Redessinement applet
code Swing  correspondant
au redessinement : la couleur de fond de la Label est la même que celle de l'applet
code Awt correspondant
au redessinement : la couleur de fond de la Label est la même que celle de l'applet
public void paint ( Graphics x ) {
 super.paint(x);
 label1.setBackground( label1.getParent( ).getBackground(  ));
}
public void paint ( Graphics x ) {
 label1.setBackground( label1.getParent( ).getBackground(  ));
}

Recommandation pour affichage Swing
public void paint ( Graphics x ) {
 super.paint(x);
 ...............
}

A la place de la surcharge de la méthode paint de JApplet et de l'appel au paint du parent (ici la classe parent d'une JApplet est la classe Applet) comme dans l'exemple précédent, le JDK recommande de plutôt d'utiliser la méthode "protected void paintComponent(Graphics g)" de la classe JComponent.

Pour plus d'informations reportez-vous au cours "Applet avec des swing\affichage Awt-Swing".
 


 
 

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_JLabelJButton extends JApplet {
      JButton jButton2 = new JButton();
      JButton jButton1 = new JButton();
      JLabel jLabel1 = new JLabel();

      public void init() {
         jLabel1.setOpaque(true);
         jLabel1.setText("ceci est un exemple");
         jLabel1.setBounds(20, 71, 260, 17);
         jButton1.setText("couleur bleue");
         jButton1.setBounds(20, 135, 129, 27);
         jButton1.addActionListener(
             new java.awt.event.ActionListener() {
                public void actionPerformed(ActionEvent e) {
                     jButton1_actionPerformed(e);
                  }
               });
         jButton2.setText("couleur jaune");
         jButton2.setBounds(162, 136, 128, 27);
         jButton2.addActionListener(
               new java.awt.event.ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                     jButton2_actionPerformed(e);
                  }
               });
         this.getContentPane().setBackground(Color.white);
         this.setSize(323, 180);
         this.getContentPane().setLayout(null);
         this.getContentPane().add(jLabel1);
         this.getContentPane().add(jButton1);
         this.getContentPane().add(jButton2);
      }
      void jButton2_actionPerformed(ActionEvent e) {
         jLabel1.setText("Bouton jaune activé");
         jLabel1.setBackground(Color.yellow);
      }
      void jButton1_actionPerformed(ActionEvent e) {
         jLabel1.setText("Bouton bleu activé");
         jLabel1.setBackground(Color.cyan);
      }
      public void paint(Graphics g){
         super.paint(g);
         jLabel1.setBackground(jLabel1.getParent().getBackground());
      }
   }
 

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_JLabelJButton.class" WIDTH=400 HEIGHT=200>
        </APPLET>
     </BODY>
</HTML>

Remonter