430 likes | 531 Views
S.I.S.S.I.S. Catania 2002/03. Amuso Raffaele. LE APPLET JAVA. Prof. D. Cantone. Prerequisiti:. Conoscenze di base del linguaggio Java;. Conoscenze delle interfacce grafiche in Java;. Generalità sulle immagini. Obiettivi:.
E N D
S.I.S.S.I.S. Catania 2002/03 Amuso Raffaele LE APPLETJAVA Prof. D. Cantone
Prerequisiti: Conoscenze di base del linguaggio Java; Conoscenze delle interfacce grafiche in Java; Generalità sulle immagini.
Obiettivi: Cognitivi:- Conoscere gli elementi fondamentali di un’applicazione web oriented;- Conoscere le possibili interazioni dell’utente con un’applicazione web; Operativi:- Saper passare i parametri ad un applet;- Saper costruire un applet con elementi grafici ed interfacce utente.
Metodologie: Lezione frontale; Esercitazioni pratiche; Piccoli progetti.
Strumenti: Libro di testo; Appunti dell’insegnante; Calcolatore (JDK e IE).
Verifica/Valutazione: Test V/F; Test pratico in laboratorio.
Tempi: 3 settimane (totale 18 ore).
Contenuti: Introduzione alle Applet;HTML e Applet;La classe Applet;L’appletwiever ed i browser.
Contenuti: Le classi Canvas e Graphics;I metodi grafici;Le immagini e le Applet;L’awt e le Applet;I thread e le Applet;Le Midlet (cenni).
Cosa sono le Applet: Le Applet sono applicativi web oriented scritti in linguaggio Java; Esse possono essere eseguite da un qualunque web browser compatibile con 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 all’interno delle pagine.
Come funzionano: javac file.java Bytecode file.html Browser con Java W.M.
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 <APPLET> ci consente di inserire all’interno della nostra pagina HTML un’applet java.
HTML e Applet: I parametri del TAG<APPLET> sono: CODE (nome del file .class)CODEBASE (path della directory di lavoro)HEIGHT e WIDTH (dimensioni dell’applet) All’interno del TAG <APPLET> è inoltre possibile passare i parametri relativi all’applet.
HTML e Applet: ESEMPIO: <HTML><BODY> <APPLETCODE=“file.class” CODEBASE=“.”><PARAM name=p1 value=0> <PARAM name=p2 value=2> <PARAM name=p3 value=“pippo”></APPLET> </BODY></HTML>
La classe Applet: Le applet vengono create estendendo la classe predefinita Applet; +--java.awt.Panel | +--java.applet.Applet Osservando la gerarchia delle classi si vede che la classe applet è una sottoclasse della classe Panel e ne eredita tutte le proprietà(componenti).
La classe Applet: Diversamente dalle applicazioni java non occorre creare un frame, poiché esso è fornito direttamente dal browser che esegue l’applet; Per creare un’applet bisogna importare il package:“java.applet.*”esso infatti rende visibile la classe Applet all’interno del programma.
La classe Applet: La struttura generale di un’applet è la seguente: import java.applet.*; public class <nome dell’applet> extends Applet { // attributi dell’applet // metodi dell’applet }
I metodi delle Applet: I medoti introdotti dalla classeapplet sono: public void init(); public void start(); public void run(); public void stop(); public void destroy(); Essi sono richiamati dal browser o dall’appletviewer. Deve essere ridefinitose l’applet implementa l’interfaccia “runnable”.
I metodi delle Applet: INIT START RUN STOP DESTROY Schema di funzionamento di un’applet:
I metodi delle Applet: La struttura di un applet java sarà quindi la seguente: import java.applet.*; public class <nome dell’applet> extends Applet {public void init() { // Inizializzazione }public void start() { // Parte l’applet }public void run() { // Corpo principale dell’applet }public void stop() { // L’applet si ferma }public void destroy() { // L’applet viene chiusa } }
Canvas e Graphics: Il browser nel quale viene lanciata l’applet crea un frame in automatico. Ad un frame è possibile aggiungere pannelli e quindi componenti (bottoni, menù eccetera). Nel pannello dell’applet è inserito automaticamente un oggetto Canvas Un Canvas è una “tela” dove è possibile disegnare.
Canvas e Graphics: Canvas( contiene il metodo paint ) Finestra dell’applet Per disegnare nel canvas bisogna ridefinire il metodo paint.Dentro il metodo paint è possibile disegnare tramite i metodi della classe Graphics.
Canvas e Graphics: (0,0) (w-1,h-1) Per ottenere le dimensioni del canvas (quindi dell’applet) basta richiamare il metodo getSize().Tale metodo torna i seguenti interi: int w = getSize().width; (torna la larghezza)int h = getSize().height; (torna l’altezza)
Il metodo paint: La finestra dell’applet 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 <nome della classe> extends Applet { … …public void paint(Graphics g) { // Ciò che verrà visualizzato nell’applet // 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 dell’applet alle coordinate (in pixel) specificate.
La prima Applet: Applet che stampa unastringa a video: import java.applet.*;import java.awt.*; publicclass Hello extends Applet {int X,Y; String S; publicvoid 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 l’applet: <html> <applet code="Hello.class" width=320 height=200></applet> </html> Basta richiamare il file tramite un browser o con l’appletviewer. 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 all’applet dal file HTML (tag PARAM)Ogni parametro ha un nome ed un valore; L’applet legge i parametri tramite il metodo getParameter().
Passaggio di parametri: Applet che stampa unastringa passata come paramero: import java.applet.*;import java.awt.*; public class Hello extends Applet {int X,Y; String S; publicvoid init() { S =getParameter("text"); X=20; Y=20; } publicvoid paint(Graphics g) { g.drawString(S,X,Y); } }
Passaggio di parametri: File HTML che richiama l’applet (con parametri): <html> <applet code="Hello.class" width=320 height=200> <PARAM name=“text” value=“Ciao a tutti!”> </applet> </html> 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 l’applet viene vista come un processo del S.O. che può avere una priorità, essere fermato, fatto ripartire o trovarsi nellostato 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 dell’uso dei thread. import java.applet.*; import java.awt.*; publicclass Hello extends Applet implements Runnable { int X,Y; String S; Thread RUN; publicvoid 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(); } publicvoid paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,320,200); g.setColor(Color.black); g.drawString(S,X,Y); } }
Le immagini: Directory dilavoro dell’applet Prende ilvalore del parametro Carical’immagine La gestione delle immagini è compito della classe Image.Un’immagine dovrà essere contenuta in una variabile di tipo Image. Caricamento di un immagineda un file: Image SFONDO;…SFONDO=getImage(getDocumentBase(),getParameter("img"));…
Le immagini: Valore (nome del file) Nome delparametro Il file HTML si presenta cosi: <html> <applet codebase=“.” code="Hello.class“ width=320 height=200><PARAM name=“img” value=“papero.gif”></applet> </html> Sarà possibile stampare l’immagine a video tramite il metodo drawImage().
Esempi finali: Scroll di testo con sfondo; Esempio di A.W.T.; Effetto grafico natalizio.
Le midlet (cenni): javac file.java Bytecode Cellulare con Java W.M. Si usa Java Micro Edition e il wireless toolkit.java.sun.com
Le midlet (cenni): Metodi per il display LCD 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 <nome midlet> extends MIDlet { // attributi della midlet // metodi della midlet }