Gli obiettivi di questa esercitazione sono: saper utilizzare le classi DataInputStream
e DataOutputStream
del package java.io
, iniziare a
prendere confidenza con AWT, ascoltatori e adattatori (capitoli 11 da 11.6.3
fino a 11.6.5 e 12 fino a 12.3).
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: saper utilizzare le classi DataInputStream
e DataOutputStream
del package java.io
.
Attività:
DataFile
a pagina 260. Compilatelo ed
eseguitelo.DataFile
per far chiedere da tastiera
il nome del file.DataFile
per far passare come primo
parametro della riga di comando (args[0]
) il nome del file.DataFile
per far scrivere il vostro
nome, il vostro cognome e il vostro numero di matricola nel file.... public class Studente { private String matricola; private float[] voti; private int esami = 0; public Studente(String matricola, int numeroMaxEsami) { this.matricola = matricola; this.voti = new float[numeroMaxEsami]; } public void aggiungiVoto(float voto) { voti[esami++] = voto; } public void salvaSuFile(Data...Stream file) { ... } public static Studente leggiDaFile(Data...Stream file) { ... ... new Studente(...); ... ... aggiungiVoto(...); ... return ...; } }Il metodo
leggiDaFile
deve restituire una nuovo oggetto Studente
con tutti i dati precedentemente salvati sul file. Obiettivo: iniziare a prendere confidenza con l'AWT.
Attività:
ProvaGUI1
per far creare 2 finestre.GUI1
per far creare una finestra quadrata e non
rettangolare.GUI1
per permettere di passare come parametro del
costruttore il titolo e la dimensione della finestra. Modificate di conseguenza
anche ProvaGUI1
.GUI1
aggiungendo una variabile intera statica
che conta quante volte viene chiamato il costruttore. Il titolo della finestra
deve essere Finestra seguito dal numero. Modificate ProvaGUI1
per far chiedere da tastiera quante finestre creare e verificate che il programma
crei il numero giusto di finestre e con i titoli giusti.Obiettivo: prendere confidenza con ascoltatori e adattatori.
Attività:
e.getWindow().dispose();
dal metodo windowClosing
.
La finestra si chiude ancora? I messaggi vengono stampati ancora?System.exit(0);
al metodo windowClosing
.
La finestra si chiude ancora? I messaggi vengono stampati ancora?System.exit(0);
dal metodo windowClosed
.
La finestra si chiude ancora? I messaggi vengono stampati ancora?Ascoltatore
con il codice a pagina 273-274. Compilate
ed eseguite.Ascoltatore
per far stampare
Ciao quando la finestra viene ridotta a icona e Hello
quando vengono ripristinate le sue dimensioni. Ascoltatore
per far stampare un messaggio diverso
in ogni metodo. Compilate ed eseguite.Ascoltatore
per far comportare la finestra in
modo controintuitivo: quando si clicca sul pulsante per chiudere viene creata
una nuova finestra, quando si clicca sul pulsante per ridurre a icona viene
chiusa la finestra e stampato Ciao!.Obiettivo: comprendere l'uso delle classi interne e anonime.
Attività:
import java.awt.*; import java.awt.event.*; public class Es4Att1 { public static void main(String[] args) { Frame f = new Frame("Esempio ascoltatore anonimo"); f.add...Listener(new ...() { public void windowClosed(WindowEvent e) { ... } public void ...(...Event ...) { ... } }); f.setBounds(100,100,400,400); f.setVisible(true); } }
FinestraCheSiChiude
aggiungendo l'ascoltatore
interno ChiudiFinestra
che chiude la finestra, ma non
esce dal programma.
import ...; import ...; class FinestraCheSiChiude extends Frame { public FinestraCheSiChiude(String titolo) { super(titolo); addWindowListener(new ChiudiFinestra()); } ... }