Nota
Gli esercizi marcati con (*) sono considerati più difficili degli altri.
Suggeriamo pertanto di affrontare la loro soluzione successivamente, per approfondire
le conoscenze.
Scrivere una classe asc che implementa un WindowAdapter
che chiude le finestre e fa terminare il programma.
Modificare il programma finestra01 dell'esercitazione
precedente facendo in modo che il Frame
creato possa anche
essere chiuso quando si clicca sul pulsante in alto a destra della finestra.
Modificare il programma es03 dell'esercitazione
precedente facendo in modo che i due Frame
possano essere chiusi
quando si clicca sul pulsante in alto a destra della finestra.
Utilizzare la classe asc definita nell'esercizio precedente.
Quante istanze della classe asc servono?
Modificare opportunamente l'esercizio 1 per far in modo che quando si clicca sul pulsante in alto a destra della finestra, invece di chiudersi, la finestra mostra nella barra del titolo la frase "NO! Non voglio chiudermi!!".
Il metodo getWindow()
ritorna un oggetto
Window
e non Frame
. Per poter utilizzare i metodi
della classe Frame
occorre per prima cosa trasformare l'oggetto
Window
in Frame
con un cast.
Scrivere un programma es04 che mostra un Frame
con
un bottone. Ogni volta che si schiaccia il bottone, il programma deve scrivere
in output (sulla consolle) la scritta "ahi!".
Modificare l'esercizio precedente facendo in modo che il programma scriva in output la prima volta "ahi!" una volta sola, la seconda volta che si preme il bottone lo scriva 2 volte e così via, alla trentesima volta ripeta per trenta volte la scritta "ahi!", ecc.
Modificare l'esercizio precedente facendo in modo che alla quarta pressione del bottone il programma scriva "Adesso mi hai stufato!" ed esca dal programma.
Scrivere un programma creaFinestre che mostra un Frame
con un Panel
con all'interno un bottone ed una casella di testo.
Quando si preme il bottone, il programma deve creare un nuovo Frame
di dimensioni 150 x 150 posizionato a 30 pixel di distanza dall'alto
e da sinistra dello schermo e con il titolo uguale a quello che sta scritto
nella casella di testo.
Passare la casella di testo come parametro nel costruttore della classe ascoltatore.
Considerate il seguente programma:
import java.awt.*; import java.awt.event.*; public class es05 { public static void main(String arg[]) { Frame f = new Frame(); CheckboxGroup c = new CheckboxGroup(); Checkbox c1 = new Checkbox("cerchio",c,false); Checkbox c2 = new Checkbox("quadrato",c,true); Button b1 = new Button("Disegna"); Button b2 = new Button("Cancella"); Canvas cn = new Canvas(); cn.setSize(200,200); Panel p = new Panel(); p.add(c1); p.add(c2); p.add(b1); p.add(b2); p.add(cn); f.add(p); disegnatore dis = new disegnatore(c1,cn); b1.addActionListener(dis); b2.addActionListener(dis); f.pack(); f.setVisible(true); } } class disegnatore implements ActionListener { Checkbox cerchio; Canvas c; disegnatore(Checkbox c1, Canvas c) { this.cerchio = c1; this.c = c; } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Disegna")) { c.paint(c.getGraphics()); if (cerchio.getState()) { c.getGraphics().drawOval(c.getSize().width/2,c.getSize().height/2,10,10); } else { c.getGraphics().drawRect(c.getSize().width/2,c.getSize().height/2,10,10); } } else { c.paint(c.getGraphics()); } } }
disegnatore dis = new disegnatore(c1,cn);
in disegnatore dis = new disegnatore(c2,cn);
?Canvas
deve essere colorato di rosso se la checkbox è selezionata.