I testi della parte teorica NON sono divulgati.
Questo perche' avete gia' un esempio in rete,
e le possibili domande di teoria sono TUTTE sulle dispense.
Essendo la scelta limitata (perche' il materiale delle dispense
e' limitato), se mettessi in rete tutti i testi, a un certo punto non
saprei piu' che domande inventare.
Sono qui dati solo i riferimenti per le soluzioni, ad uso di
chi ha fatto lo scritto.
Per la parte pratica invece viene divulgato anche il testo.
Le soluzioni alla parte teorica si trovano sulle dispense. In particolare:
Nota: poiche' l'esercizio 1 in generale e' stato sbagliato da molti, i punti fra gli esercizi sono stati ripartiti, spostando un punto dall'esercizio 1 all'esercizio 4, come segue: 1) 3 punti, 2) 3 punti, 3) 4 punti, 4) 6 punti.
(Il testo e' in corsivo)
Contesto generale per tutti gli esercizi
Consideriamo un'interfaccia che consiste in una finestra top-level
con:
un pannello (area grafica),
un gruppo di due radio button etichettati "aumenta" e "diminuisci",
una barra di menu' con un menu' "operazione" che ha due
voci le quali replicano i due radio button,
un bottone etichettato "esegui".
Stabilire una configurazione da dare all'interfaccia.
Fare un disegno schematico.
Spiegare quale gerarchia di contenimento e quali layout
manager si possono usare per ottenere questa configurazione.
La soluzione di questo esercizio dipende dalla configurazione scelta.
Errori frequenti:
(a) Trattare i due bottoni radio come un solo componente, mentre sono
due, e percio' necessitano di un contenitore intermedio.
Nota: il gruppo di radio button NON e' un componente di interfaccia,
e' solo uno strumento per rendere i bottoni mutuamente esclusivi.
Quindi NON posso inserire il gruppo di radio button, per esempio,
a nord di in un pannello con border layout...
(b) Nella descrizione, spesso scrivete cose del tipo
"metto un border layout, a nord di questo metto un grid layout...".
Questo modo di esprimersi NON e' corretto.
Quelli che si mettono uno dentro l'altro sono i contenitori,
i layout sono associati ai contenitori per organizzarli.
Il modo corretto di esprimersi e'
"metto un pannello organizzato secondo un border layout, a nord di questo
metto un altro pannello organizzato secondo un grid layout...".
(c) La barra di menu' va trattata in modo speciale (associata
direttamente alla finestra), quasi tutti invece la hanno posta, tipicamente,
in uno dei punti cardinali
della suddivisione operata nella finestra principale mediante il layout
manager BorderLayout.
Questo NON e' stato contato come errore.
Scrivere lo PSEUDO CODICE del corpo delle callback associate ai radio button e alle voci del menu' in modo tale da ottenere che: 1) in ogni momento, la voce di menu' corrispondente al radio button selezionato e' disabilitata, l'altra voce e' abilitata; 2) la scelta di una voce da menu' automaticamente seleziona il radio button corrispondente.
(Scatta quando l'utente seleziona il radio button)
(Scatta quando l'utente seleziona la voce)
Note:
(a) Qui si e' inteso che le voci di menu' siano voci "normali" e
non voci "radio".
(b) Quando clicco su un radio button (non selezionato),
la selezione di quello e la
disselezione dell'altro sono fatte automaticamente da java, non devo
farlo io nella callback.
La callback deve invece implementare il legame tra i due bottoni radio
e le due voci di menu' (legame che in Java non esiste).
Scrivere in PSEUDO CODICE il corpo della funzione di ridisegnamento (in Java paint o paintComponent) associata al pannello area grafica in modo da disegnare: un cerchio rosso avente centro nel centro del pannello e inizialmente raggio pari a R, dove R e' una variabile di stato della nostra applicazione.
Soluzione:
Errori frequenti:
(a) Una figura geometrica NON viene prima disegnata e poi colorata,
bensi' PRIMA si imposta il colore e DOPO si disegna la figura.
(b) Le figure geometriche NON sono sotto-componenti da aggiungere al
pannello grafico.
(c) Inizializzare R=10 all'interno della funzione (R=10
sara' stato posto una volta sola all'inizio nel main;
reimpostarlo ogni volta che disegno rende impossibile fare quanto
richiesto dall'esercizio 4).
Scrivere lo PSEUDO CODICE del corpo della callback associata al bottone "esegui" in modo tale che: se e' selezionato il radio button "aumenta", allora premendo "esegui" il raggio del cerchio disegnato aumenta di 5 pixel; viceversa se e' selezionato il radio button "diminuisce", allora premendo "esegui" il raggio del cerchio disegnato diminuisce di 5 pixel.
Soluzione:
Errore frequente:
Nelle procedure di callback NON si eseguono parti di disegno.
L'unica deputata a disegnare e' la funzione di disegno del pannello
(ved. esercizio 3). La callback modifica lo stato
e invoca tale funzione di disegno; questa disegnera' la nuova
situazione.