TD 10 : Les Applets



Exercice 1

Modifier l'applet de test pour que les différentes étapes du cycle de vie des applets s'affichent dans la console Java.

import java.applet.*;
public class ExApplet extends Applet{
    public void init(){
        System.out.println("Init");
    }

    public void start(){
        System.out.println("Start");
    }

    public void stop(){
        System.out.println("Stop");
    }

    public void destroy(){
        System.out.println("Destroy");
    }
}



Exercice 2

Nous reprenons le dernier exemple du TD 9 en le transformant en applet. Remarquons que nous utilisons les JApplet ( package javax.swing ) pour utiliser les JFC java 2.

1- Reprendre les écrans des TD9 et les transformer en applet.

import javax.swing.*;
import java.awt.event.*; /* listener */
import java.awt.*;
import java.util.*;
public class Class4 extends JApplet implements ActionListener,ItemListener{
    JPanel jpTitre;
    JLabel jlTitre;
    JButton jb;
    JPanel jpBouton;
    JPanel jpCombo;
    JComboBox jcb;
    JLabel jlChoix;
    public void init(){
        /*entete*/
        jpTitre=new JPanel();
        jlTitre = new JLabel("TEST GUI",JLabel.CENTER);
        jpTitre.add(jlTitre);
        /* bouton */
        jpBouton=new JPanel();
        jb=new JButton("Au revoir");
        jb.addActionListener(this);
        jpBouton.add(jb);
        jpCombo=new JPanel();
        Vector v=new Vector();
        v.addElement("choix a");
        v.addElement("choix b");
        v.addElement("choix c");
        jcb=new JComboBox(v);
        jcb.addItemListener(this);
        jlChoix=new JLabel();
        jpCombo.setLayout(new BoxLayout(jpCombo,BoxLayout.X_AXIS));
        jpCombo.add(jcb);
        jpCombo.add(jlChoix);
        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
        getContentPane().add(jpTitre);
        getContentPane().add(jpBouton);
        getContentPane().add(jpCombo);
    }
    public void actionPerformed(ActionEvent ae) {
        System.exit(0);
    }
    public void itemStateChanged(ItemEvent ie) {
        jlChoix.setText(jcb.getSelectedItem().toString());
    }
}

Exemple de fichier HTML correspondant à lire sous netscape: ( ce fichier est dans le même répertoire que Class4.class ) :

<HTML>
<embed type="application/x-java-applet;version=1.3" width="760" height="400" align="middle" CODE="Class4.class" name="Class4" TRACE="ON">
</HTML>





2- Modifier ces applets pour qu'elles soient à la fois des JApplet et des stand-alone que l'on pourra lancer sans navigateur (classes possédant une méthode main())

import javax.swing.*;
import java.awt.event.*; /* listener */
import java.awt.*;
import java.util.*;
public class Class4 extends JApplet implements ActionListener,ItemListener{
    JPanel jpTitre;
    JLabel jlTitre;
    JButton jb;
    JPanel jpBouton;
    JPanel jpCombo;
    JComboBox jcb;
    JLabel jlChoix;
    public void init(){
        /*entete*/
        jpTitre=new JPanel();
        jlTitre = new JLabel("TEST GUI",JLabel.CENTER);
        jpTitre.add(jlTitre);
        /* bouton */
        jpBouton=new JPanel();
        jb=new JButton("Au revoir");
        jb.addActionListener(this);
        jpBouton.add(jb);
        jpCombo=new JPanel();
        Vector v=new Vector();
        v.addElement("choix a");
        v.addElement("choix b");
        v.addElement("choix c");
        jcb=new JComboBox(v);
        jcb.addItemListener(this);
        jlChoix=new JLabel();
        jpCombo.setLayout(new BoxLayout(jpCombo,BoxLayout.X_AXIS));
        jpCombo.add(jcb);
        jpCombo.add(jlChoix);
        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
        getContentPane().add(jpTitre);
        getContentPane().add(jpBouton);
        getContentPane().add(jpCombo);
    }
    public void actionPerformed(ActionEvent ae) {
        System.exit(0);
    }
    public void itemStateChanged(ItemEvent ie) {
        jlChoix.setText(jcb.getSelectedItem().toString());
    }
   public static void main(String[] s ){
      Class4 c4=new Class4();
      c4.init();
      JFrame jf=new JFrame("Class 4");
      jf.getContentPane().add(c4); //Il est possible d'insérer une JApplet dans une Frame car JApplet dérive de Panel
      jf.setSize(600,400);
      jf.show();
   }
}