S.I.S.S.I.S. Catania 2002/03 LE APPLET JAVA Prof. D. Cantone Amuso Raffaele
Prerequisiti: Conoscenze delle interfacce grafiche in Java; Conoscenze di base del linguaggio Java; Generalità sulle immagini.
Obiettivi: Operativi: - Saper passare i parametri ad un applet; - Saper costruire un applet con elementi grafici ed interfacce utente. Cognitivi: - Conoscere gli elementi fondamentali di unapplicazione web oriented; - Conoscere le possibili interazioni dellutente con unapplicazione web;
Metodologie: Esercitazioni pratiche; Lezione frontale; Piccoli progetti.
Strumenti: Appunti dellinsegnante; Libro di testo; Calcolatore (JDK e IE).
Verifica/Valutazione: Test pratico in laboratorio. Test V/F;
Tempi: 3 settimane (totale 18 ore). Teoria 6 ore Laboratorio 6 ore Verifica 3 ore Approf./Recupero 3 ore
Contenuti: Introduzione alle Applet; HTML e Applet; La classe Applet; Lappletwiever ed i browser.
Contenuti: Le classi Canvas e Graphics; I metodi grafici; Le immagini e le Applet; Lawt e le Applet; I thread e le Applet; Le Midlet (cenni).
Cosa sono le Applet: Esse possono essere eseguite da un qualunque web browser compatibile con java; Le Applet sono applicativi web oriented scritti in linguaggio Java; Vengono usate soprattutto per applicazioni grafiche e interattive.
Perché le Applet: In origine le pagine web erano spoglie e povere di grafica; Non era possibile creare degli applicativi direttamente nelle pagine web; Tramite le Applet è stato possibile sia aumentare la qualità grafica del web che creare piccoli applicativi allinterno delle pagine.
Come funzionano: javacfile.java Bytecode Browser con Java W.M. file.html
Sicurezza: Le Applet risultano sicure poiché, a differenza delle applicazioni, esse hanno alcune importanti restrizioni; Un applet non può compiere le seguenti operazioni: > Leggere e scrivere file locali; > Aprire una connessione con un server diverso da quello che la ospita; > Lanciare altre applicazioni sulla macchina locale; > Invocare il metodo System.exit(); > Accedere alle proprietà del sistema.
HTML e Applet: In un file HTML è possibile richiamare un file in bytecode (.class) contenente un applet; Il TAG ci consente di inserire allinterno della nostra pagina HTML unapplet java.
HTML e Applet: I parametri del TAG sono: CODE (nome del file.class) CODEBASE (path della directory di lavoro) HEIGHT e WIDTH (dimensioni dellapplet) Allinterno del TAG è inoltre possibile passare i parametri relativi allapplet.
HTML e Applet: ESEMPIO:
La classe Applet: Le applet vengono create estendendo la classe predefinita Applet; Osservando la gerarchia delle classi si vede che la classe applet è una sottoclasse della classe Panel e ne eredita tutte le proprietà (componenti). +--java.awt.Paneljava.awt.Panel | +--java.applet.Applet
La classe Applet: Diversamente dalle applicazioni java non occorre creare un frame, poiché esso è fornito direttamente dal browser che esegue lapplet; Per creare unapplet bisogna importare il package:java.applet.* esso infatti rende visibile la classe Applet allinterno del programma.
La classe Applet: La struttura generale di unapplet è la seguente: import java.applet.*; public class extends Applet { // attributi dellapplet // metodi dellapplet }
I metodi delle Applet: I medoti introdotti dalla classe applet sono: public void init(); public void start(); public void run(); public void stop(); public void destroy(); Essi sono richiamati dal browser o dallappletviewer. Deve essere ridefinito se lapplet implementa linterfaccia runnable.
I metodi delle Applet: Schema di funzionamento di unapplet: INIT RUN START STOP DESTROY
I metodi delle Applet: La struttura di un applet java sarà quindi la seguente: import java.applet.*; public class extends Applet { public void init() { // Inizializzazione } public void start() { // Parte lapplet } public void run() { // Corpo principale dellapplet } public void stop() { // Lapplet si ferma } public void destroy() { // Lapplet viene chiusa } }
Canvas e Graphics: Il browser nel quale viene lanciata lapplet crea un frame in automatico. Ad un frame è possibile aggiungere pannelli e quindi componenti (bottoni, menù eccetera). Nel pannello dellapplet è inserito automaticamente un oggetto Canvas Un Canvas è una tela dove è possibile disegnare.
Canvas e Graphics: Per disegnare nel canvas bisogna ridefinire il metodo paint. Dentro il metodo paint è possibile disegnare tramite i metodi della classe Graphics. Finestra dellapplet Canvas ( contiene il metodo paint )
Canvas e Graphics: Per ottenere le dimensioni del canvas (quindi dellapplet) basta richiamare il metodo getSize(). Tale metodo torna i seguenti interi: int w = getSize().width; (torna la larghezza) int h = getSize().height; (torna laltezza) (0,0) (w-1,h-1)
Il metodo paint: La finestra dellapplet fornita dal browser è una matrice di pixel wxh, dove andremo a scrivere tramite il metodo Paint. Tale metodo viene richiamato automaticamente. import java.applet.*; import java.awt.*; public class extends Applet { … … public void paint(Graphics g) { // Ciò che verrà visualizzato nellapplet // Va inserito qui } }
Il metodo paint: Vi sono numerosi metodi per scrivere in tale matrice. Uno dei primi metodi che si usa è drawString: Graphics.drawString(String s,int x,int y); drawString è usato per scrivere del testo nello schermo dellapplet alle coordinate (in pixel) specificate.
La prima Applet: Applet che stampa una stringa a video: import java.applet.*; import java.awt.*; public class Hello extends Applet { int X,Y; String S; public void init() { S = new String("Ciao a tutti!"); X=20; Y=20; } public void paint(Graphics g) { g.drawString(S,X,Y); } }
La prima Applet: File HTML che richiama lapplet: Basta richiamare il file tramite un browser o con lappletviewer. C:>appletviewer Hello.html
La classe Graphics: I metodi della classe Graphics (da richiamare dentro paint(): Graphics.setColor(Color c); Graphics.drawString(String s,int x,int y); Graphics.fillRect(int x1, int y1, int x2, int y2); Graphics.fillOval(int cx, int cy, int dx, int dy); Graphics.drawRect(int x1, int y1, int x2, int y2); Graphics.drawOval(int cx, int cy, int dx, int dy); Graphics.drawLine(int x1, int y1, int x2, int y2); Graphics.drawImage(Image i, int x,int y, null); Graphics.fillArc(int x, int y, int dx, int dy, int startG, int arcG);
I colori: La gestione dei colori in java è affidata alla classe Color. Esiste una lista di colori predefiniti: Color.black; Color.white; Color.red; Color.green; … Oppure si può istanziare un colore tramite le sue componenti RGB in questo modo: Color rosso = new Color(255,0,0);
Passaggio di parametri: E possibile passare dei parametri allapplet dal file HTML (tag PARAM) Ogni parametro ha un nome ed un valore; Lapplet legge i parametri tramite il metodo getParameter().
Passaggio di parametri: Applet che stampa una stringa passata come paramero: import java.applet.*; import java.awt.*; public class Hello extends Applet { int X,Y; String S; public void init() { S =getParameter("text"); X=20; Y=20; } public void paint(Graphics g) { g.drawString(S,X,Y); } }
Passaggio di parametri: File HTML che richiama lapplet (con parametri): I parametri vengono letti tutti come stringhe, bisogna quindi operare le opportune conversioni nel leggere parametri numerici.
I thread: I thread ci consentono di sfruttare le potenzialità multitasking del S.O.; Ha senso usare i metodi star(), run() e stop() solo quando un applet e implementata come Runnable; In questo caso lapplet viene vista come un processo del S.O. che può avere una priorità, essere fermato, fatto ripartire o trovarsi nello stato di run.
I thread: Per associare una applet ad un thread dobbiamo istanziare la classe Thread. I metodi della classe Thread sono: setPriority(P); start(); stop(); sleep(M); (P può essere: MAX_ PRIORITY, MIN_ PRIORITY, NORM_ PRIORITY) (M rappresenta i Millisecondi di sleep)
Semplice scrolling: Esempio delluso dei thread. import java.applet.*; import java.awt.*; public class Hello extends Applet implements Runnable { int X,Y; String S; Thread RUN; public void init() { S = new String("Ciao a tutti!"); X=20; Y=20; } public void start() { RUN=new Thread(this); RUN.setPriority(RUN.MIN_PRIORITY); RUN.start(); } public void run() { while(true) { X++; if(X>320) X=-20; paint(getGraphics()); // Manda a video try{ RUN.sleep(10); } catch(Exception e) {} } } public void stop() { RUN.stop(); } public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,320,200); g.setColor(Color.black); g.drawString(S,X,Y); } }
Le immagini: La gestione delle immagini è compito della classe Image. Unimmagine dovrà essere contenuta in una variabile di tipo Image. Caricamento di un immagine da un file: Image SFONDO; … SFONDO=getImage(getDocumentBase(),getParameter("img")); … Carica limmagine Directory di lavoro dellapplet Prende il valore del parametro
Le immagini: Il file HTML si presenta cosi: Nome del parametro Valore (nome del file) Sarà possibile stampare limmagine a video tramite il metodo drawImage().
Esempi finali: Esempio di A.W.T.; Scroll di testo con sfondo; Effetto grafico natalizio.
Le midlet (cenni): javacfile.java Bytecode Cellulare con Java W.M. Si usa Java Micro Edition e il wireless toolkit. java.sun.com
Le midlet (cenni): La filosofia delle midlet è simile a quella delle applet. Una midlet è costruita come estensione della classe MIDlet: import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class extends MIDlet { // attributi della midlet // metodi della midlet } Metodi per il display LCD
Fine!