Esercizio 1.


Java Sun

Earthweb
(ex Gamelan)

Jars

Java Boutique

Java World

PIP






  Es. 1

   Fare un'applet in cui lo schermo sia diviso in 4 parti, ciascuna in un colore diverso. Nel mezzo del primo (in alto, a sinistra) quadrante comparirà la scritta: "Il mio nome è:"; nel mezzo dell'ultimo (in basso, a destra) quadrante comparirà la scritta "Nome", quest'ultima sarà in rilievo.


La via più semplice per realizzare quest'applet è di dividere lo schermo in quattro e usando g.fillRect() di riempire ogni parte con un colore diverso. Supponiamo per esempio che l'applet sia 400 x 400, allora:

g.setColor(Color.green);
g.fillRect(0,0,200,200);
g.setColor(Color.blue);
g.fillRect(200,0,200,200);
g.setColor(Color.red);
g.fillRect(0,200,200,200);
g.setcolor(Color.yellow);
g.fillRect(200,200,200,200);
fornisce quattro quadrati 200x200 colorati in verde, blu, rosso, giallo.
Questa soluzione non è ideale! Infatti se un domani volete cambiare le dimensioi della vostra applet, dovrete riscriverla tutta! Per evitare questo inconveniente è preferibile usare delle coordinate relative piuttosto che assolute:

//getSize().width ritorna un int uguale alla 
//larghezza dell'applet
w = getSize().width;
h = getSize().height;//come sopra, con l'altezza
g.setColor(Color.green);
g.fillRect(0,0,w/2,h/2);
g.setColor(Color.blue);
g.fillRect(w/2,0,w/2,h/2);
g.setColor(Color.red);
g.fillRect(0,h/2,w/2,h/2);
g.setcolor(Color.yellow);
g.fillRect(w/2,h/2,w/2,h/2);
Rimane poi da fare le scritte; per scrivere in rilievo cf questo link.
Per scaricare il file .java completo di una possibile soluzione.

Osservazioni: Alcuni hanno provato una soluzione più complicata, usando quattro pannelli:

public void init(){
setLayout(new GridLayout(2,2));
Panel p1 = new Panel();
p1.setBackground(Color.green);
Panel p2 = new Panel();
p2.setBackground(Color.blue);
//...ecc con p3, p4
add(p1);
add(p2);
add(p3);
add(p4);
	}
public void paint(Graphics g){
	g.drawString("Il mio nome è:",0,h/4);
	g.drawString("Nome",w/2,3*h/4);
	}
Non è una brutta idea e la scelta del GridLayout è azzecata, sfortunatamente non si vedono le scritte! Infatti il contesto grafico g è quello dell'applet e disegna sul panel dell'applet, dopodichè ricopriamo questo pannello (e le scritte) con i pannelli p1, ...,p4: le scritte non si vedono più. Per mettere in atto questa soluzione si può fare una classe myPanel che estende Panel e definire un metodo paint di myPanel. Vedremo qualcosa di simile in un prossimo esercizio.



 next		content		previous