Gli obiettivi di questa esercitazione sono: imparare a utilizzare i componenti per il testo, le applet e saper disegnare sui componenti (capitoli 12 e 13).
Raccomandazioni: Ove non altrimenti indicato, rispondete alle domande prima ragionando su carta e poi provando a editare, compilare ed eseguire. Gli esercizi etichettati con l'asterisco (*) sono più difficili: affrontateli dopo aver risolto gli altri.
Obiettivo: capire come usare i componenti per il testo.
Attività:
import java.awt.*; import java.awt.event.*; public class Es1 { public static void main(String[] args) { Frame f = new Finestra24(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setVisible(true); } } class Finestra24 extends Frame { private TextField t; public Finestra24() { this.setLayout(new FlowLayout()); t = new TextField("0"); this.add(new Label("Inserisci un numero da raddoppiare e premi invio")); this.add(t); ... } class Raddoppia implements ActionListener { public void actionPerformed(ActionEvent e) { int numero = Integer.parseInt(t.getText()); t.setText(String.valueOf(...)); } } }Notate il metodo statico
parseInt(int)
della
classe Integer
che data una stringa rappresentante un numero
intero restituisce il valore corrispondente di tipo int
.DisegnaRettangolo
che
Obiettivo: saper disegnare sui componenti.
Attività:
Canvas
:
import java.awt.*; import java.awt.event.*; public class Es2 { public static void main(String[] args) { Frame f = new Frame(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); ... f.setBounds(100,100,200,200); f.setVisible(true); } } class DisegnaQuadrato extends Canvas { private int lato; public DisegnaQuadrato(int lato) { this.lato = lato; } public void paint(Graphics g) { Dimension ... getSize(); ... } }
impostaLato(int)
alla classe DisegnaQuadrato
.
Scrivete il programma FinestraConQuadrati
che crea una finestra
con un canvas, un campo di testo e un pulsante modificaLato
.
Quando si clicca sul pulsante, deve venire eseguito il metodo impostaLato
passandogli come parametro il valore presente nella casella di testo. Ricordatevi
di invocare il metodo repaint
.Obiettivo: saper utilizzare le applet.
Attività:
App1
con un'etichetta con scritto ciao.App2
con due pulsanti che permettono di
colorarne lo sfondo di rosso e di verde./*<applet code="DisegnoApplet.class" width="400" height="400"></applet>*/ import java.awt.*; import java.awt.event.*; import java.applet.*; public class DisegnoApplet extends Applet { private final int MAX_ELEM = 10; private final int R = 15; int[] x = new int[MAX_ELEM]; int[] y = new int[MAX_ELEM]; int n = 0; public void init() { this.addMouseListener(new aggiungiCerchio()); } public void paint(Graphics abc) { for (int i = 0; i < n; i++) abc.drawOval(x[i]-this.R,y[i]-this.R,this.R*2,this.R*2); } void add(int x, int y) { if (this.n < this.MAX_ELEM) { this.x[n] = x; this.y[n] = y; this.n++; } } } class aggiungiCerchio extends MouseAdapter { public void mouseClicked(MouseEvent e) { DisegnoApplet dA = (DisegnoApplet)e.getSource(); dA.add(e.getX(),e.getY()); dA.repaint(1); } }Una volta che sono stati posizionati
MAX_ELEM
cerchi non è
più possibile aggiungerne altri. Modificare l'applet per far in modo
che quando si è raggiunto il massimo numero di cerchi, si possa continuare
a ad aggiungere cerchi levando quelli vecchi. %
.