Soluzioni allo scritto di Interfacce Utente - 20 Giugno 2005

Premessa

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.

Soluzione Parte teorica

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.

Soluzione Parte pratica

(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".

Esercizio 1

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.

Esercizio 2

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.

Callback del radio button "aumenta" (quella di "diminuisci" e' simmetrica

(Scatta quando l'utente seleziona il radio button)

Callback della voce di menu' "aumenta" (quella di "diminuisci" e' simmetrica

(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).

Esercizio 3

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).

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.