Exercise index of this lecture   Alphabetic index   Course home   

Exercises and solutions
Grafiske brugergrænseflader i Java, del 1


12.1   En meget simpel calculator  

Ideen med denne opgave er at udvide brugergrænsefladen af programmet, som beregner kvotienten og resten af to tal. Udvidelsen består i at tilføje en Liste komponent, hvor man kan angive et par af operationer, som skal udføres på de to tal i inputfelterne. I den oprindelige version vil applikationen udregne kvotient og rest af tallene. De nye operationer kan f.eks. være addition og subtraktion, multiplikation og division med videre, samt naturligvis de oprindelige (vær selv kreativ). Programmet skal beregne resultatet (de to operationer på de angivne input) når der tastes retur i inputfeltet eller når der udvælges et element i operationslisten.

Det er en pointe at gennemføre forandringerne af det oprindelige program så både model, syn og input kontrol objektet afspejler den generaliserede dialog. Eksempelvis skal rollerne af output (sum, differens, produkt ...) udskrives korrekt. Det vil være mest oplagt at gennemføre forandringerne inden for AWT. Næste gang vil en af opgaverne gå ud på at ændre løsningen på denne opgave til Swing. Afprøv gerne følgende variationer:

  • I stedet for en List anvendes en Choice.
  • Igangsæt beregningen når der trykkes på en knap (Button), som tilføjes brugergrænsefladen.
  • Eksperimenter med en anden layout manager.
Leg meget gerne med andre variationer af programmet.

Brug programmet fra noterne på denne fil som udgangspunkt for opgaveløsningen.

Solution
Vi tilføjer en List komponent til programmet (synet, DivModPresenter), hvilket er helt enkelt. Den hedder (som variabel) operatorPairs. Vi tilføjer også viden til modellen om, hvilke operationer der skal udføres. Dette er centreret om instansvariablen operations og denne offentlige metode setOperations. Vi udvider naturligvis også operationen doCalculate med en udvælgelse, der afhænger af de ønskede operationer. Endelig tilpasser vi synet, således at der udskrives passende labels på output felterne (setResLabels). I denne løsning har vi ikke anvendt observer tankegangen. Det betyder at udvalgte model operationer påvirker præsentationen (synet), hvilket er mindre pænt.

Vi har også tilføjet instansen af DivModListener som listener til item events (der udløses når elementer i listen ændres. Hermed foretages beregningerne (operationerne også hver gang der foretages en udvælgelse i listen. Man kunne også tilføje en knap (Button) som søger for at beregningen gennemføres.

Her kan man ser min løsning på opgaven.


12.2   Grafisk brugergrænseflade i projektet  

I de fleste projekter vil der være behov for en grafiske brugergrænseflade. I opfordres til at overveje hvilket behov I har i jeres projekt. Gennemfør nogle indledende eksperimenter, hvor I programmerer (dele af) en første version af brugergrænsefladen. Brug denne lejlighed til at få førstehånds erfaring med nogle af de brugergrænseflade Komponenter, som I ikke indtil nu har haft berøring med.

Overvej specielt den overordnede organisering af jeres program i model, view og control objekter.


Generated: Monday March 31, 2008, 12:09:35
on the system cs-unix