|
Es.5 |
(Gestione degli eventi) Fare l'applet Disegno qui sotto. Questo esercizio che consiste nel fare un programma di disegno elementare, richiede un minimo di articolazione, perciò prima di partire in quarta a battere del codice, analizziamo un pò la situazione. Possiamo distinguere tre oggetti: lo strumento di disegno, la tela sulla quale si disegna, l'interfaccia utente contenente la tela e i pulsanti. Ovviamente la classe dell'applet sarà quella dell'interfaccia utente. Possiamo fare una classe per lo strumento di disegno e ne faremo una anche per la tela, per definire il metodo "cancella". Riassumendo: 1) l'interfaccia utente (l'applet) avrà i pulsanti di sopra e di sotto, in mezzo la tela di disegno, questo per il layout; inoltre l'applet dovrà gestire gli eventi dei pulsanti. Questi eventi saranno di tre tipi: E la gomma? basterà dire allo strumento di disegno di scegliere uno stile e il colore dello sfondo; se si vuole fare delle cancellature di fino (risp. di grosso), lo stile sarà quello della matita (risp. aerografo); abbiamo scelto la via di mezzo (penna). Questo implica che dopo avere usato la gomma, per potere tornare a disegnare bisognerà scegliere un colore ("visibile") Iniziamo dal più difficile: lo strumento di disegno. L'idea è di usare un MouseMotionListener, un pò come si era fatto in MouseMotionEs.java; invece di fare disegnare le coordinate del mouse, facciamo disegnare una retta dal punto iniziale al punto in cui si trova il mouse e questo, lo facciamo nel metodo mouseDragged: g.drawLine(initX,initY,e.getX(), e.getY()); initX = e.getX(); initY = e.getY(); Questo ci farà disegnare con un tratto fine, da matita (l'unico modo in cui Java è in grado di disegnare se non si usa Java2D). Nel metodo mouseMoved aggiorneremo le coordinate: initX = e.getX(); initY = e.getY(); Forse come primo passo non è male cercare di fare un'applet che fa funzionare questo primo primitivo programma di disegno:
Provate adesso a fare disegnare questo strumento di disegno in vari modi (penna, aerografo) e provate a definire la tela come estensione della classe Canvas (vedere la doc). Una soluzione sarà messa in rete prossimamente. Per scaricare l'applet Disegno (file .zip) |
next content previous