S.I.S.S.I.S. Catania 2002/03
LE APPLETJAVA
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
un’applicazione web oriented;- Conoscere le possibili interazioni
dell’utente con un’applicazione web;
Metodologie:
Esercitazioni pratiche;
Lezione frontale;
Piccoli progetti.
Strumenti:
Appunti dell’insegnante;
Libro di testo;
Calcolatore (JDK e IE).
Verifica/Valutazione:
Test pratico in laboratorio.
Test V/F;
Tempi:
3 settimane (totale 18 ore).
Teoria6 ore
Laboratorio6 ore
Verifica3 ore
Approf./Recupero3 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:
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 all’interno delle pagine.
Come funzionano:
javac file.javaBytecode
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 <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>
<APPLET CODE=“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;
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.Panel | +--java.applet.Applet
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:
Schema di funzionamento di un’applet:
INIT
RUN
START
STOP
DESTROY
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:
Per disegnare nel canvas bisogna ridefinire il metodo paint.
Dentro il metodo paint è possibile disegnare tramite i metodi della
classe Graphics.
Finestra dell’applet Canvas( contiene il metodo paint )
Canvas e Graphics:
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)
(0,0)
(w-1,h-1)
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.*;
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 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;
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 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.*;
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.
Un’immagine dovrà essere contenuta in una variabile di tipo Image.
Caricamento di un immagineda un file:
Image SFONDO;…SFONDO=getImage(getDocumentBase(),getParameter("img"));…
Carical’immagine
Directory dilavoro
dell’applet
Prende ilvalore delparametro
Le immagini:
Il file HTML si presenta cosi:<html>
<applet codebase=“.” code="Hello.class“ width=320 height=200> <PARAM name=“img” value=“papero.gif”></applet>
</html>
Nome delparametro
Valore(nomedel file)
Sarà possibile stampare l’immaginea video tramite il metodo drawImage().
Esempi finali:
Esempio di A.W.T.;
Scroll di testo con sfondo;
Effetto grafico natalizio.
Le midlet (cenni):
javac file.javaBytecode
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 <nome midlet> extends MIDlet {
// attributi della midlet
// metodi della midlet
}
Metodi per ildisplay LCD
Fine!