210 likes | 400 Views
Applet Java. introduzione. Introduzione. Un’applet Java: Una applet (" applicazioncina ") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet Apporta dinamicità alle pagine HTML "statiche"
E N D
Applet Java introduzione
Introduzione Un’applet Java: • Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet • Apporta dinamicità alle pagine HTML "statiche" • Viene eseguita dal browser, che quindi deve incorporare un interprete Java • Può essere scritto con un semplice editor di testo e deve essere salvato con l’estensione .java • Il nome del file deve essere lo stesso della classe • Non deve contenere il main a differenza di un semplice programma java • Viene processato tramite il comando javac.exe che si trova nella cartella java\jdk\bin • Una volta processato seguendo l’istruzione javacnomefile.java, viene prodotto il file nomefile.class, il bytecode • Il programma jdk è free e viene scaricato liberamente dal sito della SUN
Introduzione è organizzata intorno a 4 metodi standard: • init(), che gioca il ruolo del costruttore • start() e stop(), chiamati dal browser ogni volta che occorre avviare /fermare l'applet • destroy(), invocato quando il browser viene chiuso.
File Html • Per far funzionare l’applet java, abbiamo detto che c’è bisogno di un file Html • Il file html si deve trovare nella stessa directory del file processato nomefile.class • L’essenziale da scrivere è il seguente: <html> <applet code= “nomefile.class” width=300 height=30></applet></html> I valori 300 e 30 indicano le dimensioni dell’applet
Un semplice esempio • import java.applet.*;import java.awt.*; public classnomefileextends Applet{ public voidpaint (Graphics g){g.drawString(“Ciao, mondo!!!”,10,50);} } N.b. sono stati scritti in grassetto i comandi standard. I numeri 10, 50 stanno ad indicare le coordinate dove iniziare a scrivere
I package • Java ha dei package , un gruppo di classi utili per determinate operazioni • import = è un comando che indica al compilatore quali dati deve caricare in memoria. • Java, javax sono superclassi • I package più utilizzati sono javax.swing e java.awt, java.applet. • Scrivendo * alla fine, vuol dire che si importano tutte le sottoclassi del package • I package java.awt e javax.swing contengono le classi e le interfacce necessarie per creare e manipolare le interfacce utenti grafiche, le interfacce per i componenti GUI • awt = AbstractWindowingTools. È una classe grafica • java.applet.Applet = classi standard per un'applet cioè la superclasse java e la rispettiva sottoclasse applet e la sottoclasse seguente Applet. • extends = dichiarerà l'appartenenza della classe creata alle superclassi elencate.
Un po’ di geometria • import java.applet.JApplet;import java.awt.Graphics; public class geometria extends Applet{ public voidpaint (Graphics g){g.drawLine(15,10,210,150); //disegna una linea passante //per due punti P(15,10) Q(210,150) g.drawRect(10, 20,40,200);} }
Strutture di controllo • Il java somiglia molto al C++ • Riportiamo una serie di esempi • import java.applet.JApplet;import java.awt.Graphics; public class geometria1 extends Applet{ public voidpaint (Graphics g){for( int i=0;i<10;i++)g.drawLine(15,10,210,150*i); } } • In questo esempio si traccia un fascio di rette
Strutture di controllo • Lo stesso esempio si poteva fare con do while • import java.applet.JApplet;import java.awt.Graphics; public class geometria1 extends Applet{ public voidpaint (Graphics g){int i=0; do { g.drawLine(15,10,210,150*i); i++; }while (i<10); } }
Switch • import java.awt.Graphics; • import javax.swing.*; • public class test extendsJApplet{ • int scelta; • public voidinit(){ • String input; • input=JOptionPane.showInputDialog("scrivi 1 se vuoi rette\n"+ • "scrivi 2 se vuoi rettangoli\n"+ • "scrivi 3 se vuoi dei cerchi"); • scelta=Integer.parseInt(input);} • public voidpaint(Graphics g){for(int i=0;i<10;i++){ • switch(scelta){ • case 1: g.drawLine(10,10,250,10+10*i); break; • case 2:g.drawRect(10+i*10,10+i*10,50+i*50,50+i*50);break; • case 3: g.drawOval(10+i*10,10+10*i,50+10*i,50+10*i);break; • default:JOptionPane.showMessageDialog(null,"numero non valido"); • }}}}
Metodi standard • init • start • stop • destroy
Voidinit • public voidinit( ) = dichiara il metodo init dove verrà richiamata la variabilie prima citata. Il metodo init( ) è il metodo di sistema che si occupa dell'inizializzazione di tutte le variabili. Questo metodo viene richiamato automaticamente quando l'applet viene lanciato e poi non viene più utilizzato quindi è importante utilizzarlo solo per inizializzare le variabili e gli oggetti.
Start, stop, destroy • start() che viene chiamato dal browser ogni volta che l'applet deve essere riavviata – tipicamente riavvia un'animazione o un thread – non occorre implementarlo se non ci sono animazioni o thread da riattivare • stop() viene chiamato dal browser ogni volta che l'applet deve essere fermata – tipicamente ferma un'animazione o un thread – non occorre implementarlo se non ci sono animazioni o thread da fermare • destroy()viene chiamato dal browser quando il browser stesso si chiude
Un testo più colorato • import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Font; public class esempio2 extendsjava.applet.Applet{ Color col; Font carattere; String testo; public voidinit( ) { col=new Color(255,40,40); carattere=new Font("Arial",Font.BOLD,28); testo=newString(getParameter("text")); } public voidpaint(Graphics g) { g.setColor(col); g.setFont(carattere); g.drawString(testo,50,80); } }
col=new Color(255,40,40) definisce il nuovo colore che andremo a creare con i valore decimali (R,G,B) per la nostra scritta carattere=new Font("Arial",Font.BOLD,28) definisce il tipo, lo stile e la dimensione del carattere; in questo caso avremo un carattere di tipo Arial in grassetto con dimensione di 28 pixel. Font.BOLD indica il grassetto, Font.PLAIN lo stile normale e Font.ITALIC lo stile corsivo g.setColor/g.setFont = sono specifiche del metodo paint che permettono la visualizzazione del colore e del carattere su schermo <html> <head> <title>Esempiotestodicolorerosso</title> </head> <body> <center> <applet code="esempio2.class" width="230" height="180"> <param name="text" value="APPLET"> </applet> </center> </body> </html>
Un po’ di sfumature • import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Font; public class sfumatura extendsjava.applet.Applet{ Color col; Color col1; Color col2; Color col3; Font carattere; public voidinit( ) { col=new Color(0,0,255); carattere=new Font("Arial",Font.PLAIN,40); col1=new Color(1,150,255); col2=new Color(1,204,255); col3=new Color(1,234,255); setBackground(Color.white); } public voidpaint(Graphics g) { g.setFont(carattere); g.setColor(col); g.drawString("APPLET",60,70); g.setColor(col1); g.drawString("APPLET",57,67); g.setColor(col2); g.drawString("APPLET",54,64); g.setColor(col3); g.drawString("APPLET",51,61); } }
Tante figure geometriche • import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; public class forme extendsjava.applet.Applet{ public voidinit() { setBackground(Color.white); } public voidpaint(Graphics g) { g.setColor(Color.yellow); g.fillOval(16,15,42,42); g.setColor(Color.green); g.fillRect(70,100,90,40); g.setColor(Color.red); g.drawOval(70,15,72,50); g.setColor(Color.green); g.drawRect(180,21,44,66); g.setColor(Color.red); g.drawLine(30,140,60,80); g.setColor(Color.green); g.drawArc(80,160,80,50,50,140); g.setColor(Color.pink); g.fillArc(160,160,80,50,50,120); } }
Un po’ di spiegazioni • g.fillOval(x1,y1,l1,l2) disegna un ovale riempiendolo con il colore settato. I valori x1 y1 sono le coordinate dell'angolo in alto a sinistra, l1 a lunghezza del diametro orizzontale, l2 la lunghezza del diametro verticale. g.fillRect(x1,y1,x2,y2) disegna un rettangolo riempiendolo con il colore settato. Le quattro coordinate sono rispettivamente le coordinate dell'angolo in alto a sinistra e dell'angolo in basso a destrag.drawOval(x1,y1,l1,l2) disegna un ovale. I valori rappresentano rispettivamente: x1e y1 le coordinate dell'angolo in alto a sinistra, l1 a lunghezza del diametro orizzontale, l2 la lunghezza del diametro verticale.
Un po’ di spiegazioni • g.drawRect(x1,y1,x2,y2) disegna un rettangolo del colore settato. Le quattro coordinate sono rispettivamente le coordinate dell'angolo in alto a sinistra e dell'angolo in basso a destrag.drawLine(x1,y1,x2,y2) disegna una linea di colore settato. I valori rappresentano rispettivamente le coordinate dell'angolo in alto a sinistra, le coordinate in basso a destra. g.drawArc(x1, y1,l1,l2,t,alpha) disegna un'arco vuoto di colore settato. I valori rappresentano rispettivamente: x1,y1 le coordinate dell'angolo in alto a sinistra, l1 la lunghezza del diametro orizzontale, l2 la lunghezza del diametro verticale, t il punto di partenza dell'angolo dell'arco e alpha l'angolatura dell'arco g.fillArc(x1,y1,l1,l2,t,alpha) disegna un'arco pieno di colore settato.
thread • Java è un linguaggio che può essere eseguito logicamente in molti luoghi nello stesso momento, per motivo è detto multi-thread. • I thread logici rappresentano una serie di processi logici che condividono la stessa memoria della applicazione che li ha creati. • In Java, esistono un certo numero di thread che vengono avviati dalla virtualmachine in modo del tutto trasparente all'utente