La classe Prog contient un constructeur, une méthode main() (bien sûr !) et deux méthodes de démarrage et d'arrêt personalisées.
La classe ProgApp, dans sa méthode init(), instancie ... un objet Prog ! et le met dans son panneau de contenu.
Les méthodes start() et stop() de l'applet appellent simplement les méthodes start et stop de Prog.
|
import javax.swing.JApplet;
public class ProgApp extends JApplet {
private Prog myprog;
}
public void init() {
getContentPane().add("Center", myprog = new Prog());
}
public void start() {
myprog.start();
}
public void stop() {
myprog.stop();
}
|
Il n'y a finalement pas grand chose dans cette classe ! C'est juste un stub pour exécuter Prog en tant qu'applet.
Tout le travail est (et doit être) fait dans Prog et les autres classes qu'il instancie.
|
import java.awt.*;
import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Prog extends JPanel {
JButton startB; // start/stop button
}
// Constructeur : définit l'interface graphique
setLayout(new BorderLayout(5,0));
} // constructeur
JPanel p1 = new JPanel();
// Méthode de démarrage
try {
}
sequencer = MidiSystem.getSequencer(); sequencer.open(); } catch (Exception e) { e.printStackTrace(); } sequencer.addMetaEventListener(this); // Méthode d'arrêt
if (startB.getText().startsWith("Stop")) {
}
startB.doClick(0); } if (sequencer != null) { sequencer.close(); } sequencer = null; // Initialisation en tant qu'application
final Prog myprog = new Prog();
}
JFrame f = new JFrame("Prog"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); f.getContentPane().add("Center", myprog); f.pack(); f.setSize(320, 140); f.show(); prog.open();
|
Cet exemple ne fait pas grand chose, mais à vous de jouer...