Unità E4 Applet Obiettivi • Saper progettare e realizzare Applet Java all’interno di pagine HTML • Comprendere le interazioni tra il browser e l’applet • Saper inserire un’applet in una pagina web • Sapere personalizzare il funzionamento di un’applet servendosi dei parametri Definizione • Le applet sono piccole applicazioni che operano all’interno delle pagine web. • Quando il browser incontra una pagina contenente un’applet, individua il file che contiene il codice e lo scarica. • Questo non è altro che una classe Java, che viene eseguita attraverso il Java Runtime Environment direttamente dal browser all’interno della pagina web. Applet e applicazioni • L’interfaccia grafica presente all’interno di un’applet è la stessa che si utilizza in una finestra (campi di testo, liste, combo box, pulsanti e menu). • Le applet presentano una serie di limitazioni (per esempio non possono accedere al disco locale) • Le limitazioni sono state imposte per motivi di sicurezza; in caso contrario, rappresenterebbero un strumento per penetrare nel sistema degli utenti e carpire informazioni riservate. Implementazione • Le applet sono implementate in Java attraverso sottoclassi di JApplet. • Japplet dispone del metodo getContentPane() che consente di accedere al contenitore che rappresenta l’area dell’applet. Un esempio import javax.swing.JApplet; import javax.swing.JLabel; public class MiaApplet extends JApplet { public void init() { super.init(); getContentPane().add( new JLabel(“Esempio”)); } } Ciclo di vita • In browser e l’applet comunicano tra loro mediante eventi: – init() : inializzazione dell’applet – start() e stop() :inizio e fine dell’esecuzione dell’applet – destroy() :la pagina che contiene l’applet è chiusa Ciclo di vita – un esempio import javax.swing.JApplet; public class Applet2 extends JApplet { public void destroy() { System.out.println(“destroy()”); } public void init() { System.out.println(“init()”); } public void start() { System.out.println(“start()”); } public void stop() { System.out.println(“stop()”); } } Inserimento in una pagina html • Per inserire un’applet in una pagina web è necessario utilizzare il tag <applet>. • Una pagina web può contenere anche più di un’applet. • I parametri obbligatori del tag <applet > sono: – code. Specifica il nome della classe – width. Specifica la larghezza del riquadro definito per la classe; – height. Specifica l’altezza del riquadro definito per la classe. Esempio – tag <applet> <html> <body> <applet code=”unitaE4/Applet1.class” width=”200” height=”50”> </applet> </body> </html> Interazione con il browser • Un’applet ha la possibilità di interagire con il browser, principalmente per presentare un messaggio nella sua barra di stato invocando il metodo showMessage(). • L’applet ha anche la possibilità di caricare nella finestra una nuova pagina invocando il metodo showDocument(url) • Un ulteriore elemento di interazione con il browser è il metodo getAppletInfo() che è implementato da chi sviluppa l’applet per fornire informazioni sulla stessa. Esempio import java.awt.FlowLayout; import javax.swing.*; public class Applet3 extends JApplet { public void init() { JButton b = new JButton(“Fai clic”); b.addActionListener( new AvvisoActionListener(this) ); getContentPane().setLayout(new FlowLayout()); getContentPane().add( b ); } } L’ascoltatore … import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JApplet; class AvvisoActionListener implements ActionListener { private final JApplet applet; AvvisoActionListener(JApplet applet) { this.applet = applet; } public void actionPerformed(ActionEvent e) { applet.showStatus(“Hai premuto il pulsante!”); } } Parametri • Le applet supportano i parametri, che sono passati dalla pagina web attraverso tag di tipo <PARAM>. • Ogni elemento di questo tipo ha due attributi: NAME specifica il nome dell’attributo, mentre VALUE il suo valore. Esempio con parametri public class Applet6 extends JApplet { public void init() { getContentPane().setLayout( new FlowLayout() ); getContentPane().add( new JLabel( getParameter(“TESTO1”)) ); getContentPane().add( new JLabel( getParameter(“TESTO2”)) ); }} <html><body> <applet code=”unitaE4/Applet6.class” width=”200” height=”50”> <param name=”TESTO1” value=”Ciao “/> <param name=”TESTO2” value=”Mondo!”/> </applet></body></html>