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");
}
}
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();
}
}