Con gli applet possiamo disegnare in una finestra.
Non andiamo nel dettaglio.
Può essere fatta cosí:
<html> <head></head> <body> <applet code="PrimoApplet.class" height=500 width=500></applet> </body> </html>
Cosa fare:
notepad PrimoApplet.html
Scrivere la pagina html con il codice sopra.
Dopo code va scritto il nome del programma Java tradotto, ossia quello che ha .class al posto di .java
È un pò diverso dai programmi visti fino a questo momento:
import java.applet.*; import java.awt.*; public class PrimoApplet extends Applet { public void paint(Graphics g) { g.drawLine(0,0,200,200); } }
Vediamo le differenze una per una.
È necessario importare java.applet, perchè contiene delle classi che ci servono.
public class PrimoApplet extends Applet
Ricordate la parte extends Applet
Serve perchò esiste un applet standard, (che non disegna niente).
Lo estendiamo dicendo cosa va disegnato.
Al posto di public .. main.. abbiamo:
public void paint(Graphics g) { // istruzioni }
Sia main che paint sono due metodi.
Se si fa java NomeProgramma, vengono eseguite le istruzioni del metodo main
Se si fa appletviewer pagina.html e la pagina contiene un applet, vengono eseguite le istruzioni di paint
Ci possiamo mettere tutte le istruzioni solite.
System.out.println si può usare, ma non ha effetto (non stampa niente)
Possiamo usare delle nuove istruzioni di disegno.
Voi:
A questo punto, lui:
Viene aperta questa finestra:
L'origine degli assi è il punto in alto a sinistra.
Per valori di y crescenti, il punto si sposta verso il basso.
L'oggetto g modella la finestra, in cui posso disegnare.
È come quando ho un file f: un oggetto che rappresenta un file. Qui ho un oggetto che rappresenta la finestra.
Disegnare una serie di linee orizzontali a distanza 20
La dimensione della finestra è quella scritta nella pagina html
La singola linea orizzontale ad altezza y si disegna con:
g.drawLine(0,y,500,y);
L'istruzione di disegno di una singola linea va ripetuta per y che va da 0 a 500
import java.applet.*; import java.awt.*; public class Linee extends Applet { public void paint(Graphics g) { int y; for(y=0; y<=500; y=y+20) g.drawLine(0,y,500,y); } }
Non dimenticate di scrivere il file Linee.html!
Abbiamo visto punti e rettangoli.
Abbiamo altri oggetti, che però hanno coordinate reali.
Li vedremo un'altra volta.
Realizzare il seguente disegno: i quadrati hanno lato 10 e distanza 10 l'uno dall'altro.
g.drawRect(x, y, larghezza, altezza);
Tutti i rettangoli hanno gli stessi lati:
g.drawRect(x,y,10,10);
Disegna un rettangolo con lati 10 e punto in alto a destra in posizione x,y
Voglio ripetere il disegno del rettangolo per x=0,20,40,...500
for(x=0; x<500; x=x+20) g.drawRect(x,y,10,10);
Disegna la fila di rettangoli all'altezza data da y
Devo ripetere il disegno per y=0,20,40,...,500
import java.applet.*; import java.awt.*; public class Rettangoli extends Applet { public void paint(Graphics g) { int x, y; for(y=0; y<500; y=y+20) for(x=0; x<500; x=x+20) g.drawRect(x,y,10,10); } }
g.drawOval(x,y,w,h)
Disegna l'ellisse inscritta nel rettangolo.
Disegnare il cerchio con centro in coordinate (100,100) e raggio 40.
Non posso usare le coordinate del centro come primi due argomenti di drawOval
// sbagliato! g.drawRect(100,100,40,40);
Il rettangolo in cui il centro è inscritto ha coordinate (x_centro - raggio, y_centro -raggio)
I lati del rettangolo sono 2*raggio.
Fare questo disegno:
import java.awt.*; public class Olimpiadi extends java.applet.Applet { public void paint(Graphics g) { /* i tre cerchi di sopra */ g.drawOval(0, 0, 20, 20); g.drawOval(20, 0, 20, 20); g.drawOval(40, 0, 20, 20); /* i tre cerchi di sotto */ g.drawOval(10, 10, 20, 20); g.drawOval(30, 10, 20, 20); } }