Ricerca…


introduzione

Le applet fanno parte di Java sin dalla sua versione ufficiale e sono state utilizzate per insegnare Java e la programmazione per diversi anni.

Gli ultimi anni hanno visto una spinta attiva per allontanarsi da Applet e altri plugin del browser, con alcuni browser che li bloccano o non li supportano attivamente.

Nel 2016, Oracle ha annunciato l'intenzione di deprecare il plug-in, passare a un Web senza plug-in

Sono ora disponibili API nuove e migliori

Osservazioni

Un'applet è un'applicazione Java che normalmente viene eseguita all'interno di un browser web. L'idea di base è quella di interagire con l'utente senza la necessità di interagire con il server e trasferire le informazioni. Questo concetto ha avuto molto successo intorno all'anno 2000, quando la comunicazione via internet era lenta e costosa.

Un'applet offre cinque metodi per controllare il loro ciclo di vita.

nome del metodo descrizione
init() viene chiamato una volta quando viene caricata l'applet
destroy() viene chiamato una volta quando l'applet viene rimosso dalla memoria
start() viene chiamato ogni volta che l'applet diventa visibile
stop() viene chiamato ogni volta che l'applet viene sovrapposta ad altre finestre
paint() viene chiamato quando necessario o attivato manualmente chiamando repaint()

Applet minima

Un'applet molto semplice disegna un rettangolo e stampa una stringa sullo schermo.

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 di un'applet si estende da javax.swing.JApplet .

Java SE 1.2

Prima che Java 1.2 e l'introduzione delle applet API swing fossero estese da java.applet.Applet .

Le applet non richiedono un metodo principale. Il punto di ingresso è controllato dal ciclo di vita. Per usarli, devono essere incorporati in un documento HTML. Questo è anche il punto in cui è definita la loro dimensione.

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

Creazione di una GUI

Le applet potrebbero essere facilmente utilizzate per creare una GUI. Si comportano come un Container e hanno un metodo add() che prende qualsiasi componente awt o 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);
    }
}

Apri i collegamenti dall'applet

È possibile utilizzare il metodo getAppletContext() per ottenere un oggetto AppletContext che consente di richiedere al browser di aprire un collegamento. Per questo si usa il metodo showDocument() . Il suo secondo parametro dice al browser di usare una nuova finestra _blank o quella che mostra 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);
    }
}

Caricamento di immagini, audio e altre risorse

Le applet Java sono in grado di caricare risorse diverse. Ma dal momento che sono in esecuzione nel browser Web del client, è necessario assicurarsi che tali risorse siano accessibili. Le applet non sono in grado di accedere alle risorse client come file system locale.

Se si desidera caricare risorse dallo stesso URL in cui è memorizzata l'applet, è possibile utilizzare il metodo getCodeBase() per recuperare l'URL di base. Per caricare risorse, le applet offrono i metodi getImage() e getAudioClip() per caricare immagini o file audio.

Carica e mostra un'immagine

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

Carica e riproduci un file 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();
    }
}

Carica e visualizza un file di testo

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow