Recherche…


Introduction

Les applets font partie de Java depuis sa sortie officielle et ont été utilisés pour enseigner Java et la programmation pendant plusieurs années.

Au cours des dernières années, on s’est efforcé de s’éloigner d’Applets et d’autres plug-ins de navigateur, certains navigateurs les bloquant ou ne les supportant pas activement.

En 2016, Oracle a annoncé son intention de déprécier le plug-in, en passant à un Web sans plug- in.

Des API plus récentes et meilleures sont maintenant disponibles

Remarques

Une applet est une application Java qui s'exécute normalement dans un navigateur Web. L'idée de base est d'interagir avec l'utilisateur sans avoir besoin d'interagir avec le serveur et de transférer des informations. Ce concept a connu un grand succès en 2000, lorsque la communication par Internet était lente et coûteuse.

Une applet propose cinq méthodes pour contrôler leur cycle de vie.

nom de la méthode la description
init() est appelé une fois lorsque l'applet est chargé
destroy() est appelé une fois lorsque l'applet est retiré de la mémoire
start() est appelé chaque fois que l'applet est visible
stop() est appelé chaque fois que l'applet est recouvert par d'autres fenêtres
paint() est appelée en cas de besoin ou déclenchée manuellement en appelant repaint()

Applet Minimal

Une applet très simple dessine un rectangle et imprime quelque chose à l'écran.

public class MyApplet extends JApplet{ 

    private String str = "StackOverflow";

    @Override
    public void init() {
        setBackground(Color.gray);
    }
    @Override
    public void destroy() {}
    @Override
    public void start() {}
    @Override
    public void stop() {}
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.yellow);
        g.fillRect(1,1,300,150);
        g.setColor(Color.red);
        g.setFont(new Font("TimesRoman", Font.PLAIN, 48));
        g.drawString(str, 10, 80);
    }
}

La classe principale d'une applet s'étend depuis javax.swing.JApplet .

Java SE 1.2

Avant Java 1.2 et l'introduction du swing, les applets API s'étaient étendus à partir de java.applet.Applet .

Les applets ne nécessitent pas de méthode principale. Le point d'entrée est contrôlé par le cycle de vie. Pour les utiliser, ils doivent être incorporés dans un document HTML. C'est aussi le point où leur taille est définie.

<html>
  <head></head>
  <body>
     <applet code="MyApplet.class" width="400" height="200"></applet>
  </body>
</html>

Créer une interface graphique

Les applets peuvent facilement être utilisés pour créer une interface graphique. Ils agissent comme un Container et ont une méthode add() qui prend tout composant awt ou swing .

public class MyGUIApplet extends JApplet{

    private JPanel panel;
    private JButton button;
    private JComboBox<String> cmbBox;
    private JTextField textField;

    @Override
    public void init(){
        panel = new JPanel();        
        button = new JButton("ClickMe!");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                if(((String)cmbBox.getSelectedItem()).equals("greet")) {
                    JOptionPane.showMessageDialog(null,"Hello " + textField.getText());
                } else {
                    JOptionPane.showMessageDialog(null,textField.getText() + " stinks!");
                }
            }
        });
        cmbBox = new JComboBox<>(new String[]{"greet", "offend"});
        textField = new JTextField("John Doe");
        panel.add(cmbBox);
        panel.add(textField);
        panel.add(button);
        add(panel);
    }
}

Ouvrir des liens depuis l'applet

Vous pouvez utiliser la méthode getAppletContext() pour obtenir un objet AppletContext qui vous permet de demander au navigateur d'ouvrir un lien. Pour cela, vous utilisez la méthode showDocument() . Son second paramètre indique au navigateur d’utiliser une nouvelle fenêtre _blank ou celle qui affiche l’applet _self .

public class MyLinkApplet extends JApplet{
    @Override
    public void init(){
        JButton button = new JButton("ClickMe!");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent ae) {
                AppletContext a = getAppletContext();                 
                try {
                    URL url = new URL("http://stackoverflow.com/");
                    a.showDocument(url,"_blank");
                } catch (Exception e) { /* omitted for brevity */ }   
            }
        });
        add(button);
    }
}

Chargement d'images, audio et autres ressources

Les applets Java peuvent charger différentes ressources. Mais comme ils s'exécutent dans le navigateur Web du client, vous devez vous assurer que ces ressources sont accessibles. Les applets ne peuvent pas accéder aux ressources client en tant que système de fichiers local.

Si vous souhaitez charger des ressources à partir de la même URL que l'applet est stockée, vous pouvez utiliser la méthode getCodeBase() pour récupérer l'URL de base. Pour charger des ressources, les applets proposent les méthodes getImage() et getAudioClip() pour charger des images ou des fichiers audio.

Charger et afficher une image

public class MyImgApplet extends JApplet{

    private Image img;

    @Override
    public void init(){
        try {
            img = getImage(new URL("http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png"));
        } catch (MalformedURLException e) { /* omitted for brevity */ }
    }
    @Override
        public void paint(Graphics g) {
            g.drawImage(img, 0, 0, this);
        } 
}

Charger et lire un fichier audio

public class MyAudioApplet extends JApplet{

    private AudioClip audioClip;

    @Override
    public void init(){
        try {
            audioClip = getAudioClip(new URL("URL/TO/AN/AUDIO/FILE.WAV"));
        } catch (MalformedURLException e) { /* omitted for brevity */ }
    }
    @Override
    public void start() {
        audioClip.play();
    } 
    @Override
    public void stop(){
        audioClip.stop();
    }
}

Charger et afficher un fichier texte

public class MyTextApplet extends JApplet{
    @Override
    public void init(){
        JTextArea textArea = new JTextArea();
        JScrollPane sp = new JScrollPane(textArea);
        add(sp);
        // load text
        try {
            URL url = new URL("http://www.textfiles.com/fun/quotes.txt");
            InputStream in = url.openStream();
            BufferedReader bf = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while((line = bf.readLine()) != null) {
                textArea.append(line + "\n");
            }
        } catch(Exception e) { /* omitted for brevity */ }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow