Programutvecklingsteknik
Övning 2
- Skriv en komponent med 12 (4x3) knappar som representerar
siffrorna 1,2,3 ...9 på de tre översta raderna och *, 0 och # på
den understa raden. Komponenten ska komma ihåg de hittills inmatade
tecknen men när man trycker på * så rensas inmatningen.
# är verkningslös (eller hitta på en intressant betydelse för den).
Obs! Den inmatade koden visas inte upp i komponentens grafiska del
utan läses av med en metod. Rita ett UML-klassdiagram först
förstås!
Lösningsförslag, javakod:
Keypad.java
Tryck på # suddar senast inmatade tecken. Inluderar även en del av
lösningen till uppgift 3 i och med att det finns ett
JTextField -attribut som kan sättas om man vill men en
särskild konstruktor för det.
- Skriv ett testprogram med mainmetod som öppnar ett fönster och
testar komponenten.
Det går att lägga main-metoden i komponenten. Hur är det möjligt?
Är det någon fördel med det jämfört med att lägga den i en ny klass?
Lösning:
Main-metoden i Keypad gör testen.
- Modifiera eller utvidga eller åstadkom på annat sätt
en komponent som liknar den i uppgift 1 men som visar upp den inmatade
koden i ett fält under tangenterna.
Lösningsförslag, javakod:
DisplayFrame.java
Mainmetod med JFrame som testar komponenten inkluderas.
Kör appleten! På kursledarens dator syns inte
Label-fältet under knappsatsen när det är tomt! En TextField syns även som tom.
Textfield är en komponent för både in- och utmatning. Inmatning
kan förbjudas genom anrop av setEditable(false) på Textfield-komponenten.
- Gör en knappkomponent baserad på Swingkomponenten JButton.
Komponenten ska kunna ha tre olika utseenden som väljs genom ett
metodanrop. Ett alternativ kan vara tomt (utan bild). Här finns
två bilder att använda:
frog.gif penguin.gif.
Lösningsförslag:
BildknappKomponent.java
|
|