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. %.
Last modified:
2003-05-20