• kth.se
  • Studentwebben
  • Intranät
  • kth.se
  • Studentwebben
  • Intranät
Logga in
DD1385 HT22 (prutt22)
Labb1
Hoppa över till innehåll
Översikt
  • Logga in
  • Översikt
  • Kalender
  • Inkorg
  • Historik
  • Hjälp
Stäng
  • Min översikt
  • DD1385 HT22 (prutt22)
  • Uppgifter
  • Labb1
  • Startsida
  • Kursöversikt
  • Moduler
  • Course Evaluation

Labb1

  • Inlämningsdatum Inget inlämningsdatum
  • Poäng 0

Kösystemet Queue (http://queue.csc.kth.se) för hjälp och redovisning under schemalagd labbtillfälle.

Vi använder Queue för kö till hjälp och redovisning. Välj prutt i Queue. Om du inte använt Queue  tidigare så fråga någon av lärarna.

 

Laboration 1 - En liten knappkomponent

Föreläsning F1 och F2 samt första övningen går igenom det som behövs.

Mål

Att få grundläggande förståelse för Javas grafiska komponenter, fristående grafiska program, händelser och lyssnare.

Innehåll

  • Skapa och köra enkla fristående grafiska program.
  • Använda grafikbibliotek.
  • Göra en egen grafisk komponent genom att bygga på en komponent från ett grafikbibliotek.
  • Implementera knapptryckning, att "något händer" när man trycker på en knapp.

Ni ska redovisa program från och med uppgift 4. Gör det som behövs och se till att ni kan svara på frågor om alla deluppgifter.

Uppgift 1 – Gör ett fristående javaprogram

Skriv ett program som öppnar ett fristående fönster med ram på datorskärmen. Skapa en klass med namnet MyFrame.

Krav:

  • MyFrame ska ärva från biblioteksklassen JFrame.

  • De kod du väljer att placera i konstruktoren ska vara den kod som ska vara i konstruktoren och kod som inte ska vara i konstruktoren ska inte vara där.

  • Se till att du har den kod som gör att programmet avslutas när man sklickar på avstängningsknappen för fönstret.

Se till att författarnas namn står i ramen som fönstrets titel. Ge fönstret din favoritfärg som bakgrundsfärg.

Uppgift 2 – Skapa en utvidgad knappkomponent med två tillstånd

Skapa en klass MyButton som ärver från JButton. Knappen ska ha två olika tillstånd. Låt tillstånden representeras av knappens bakgrundsfärg och text på knappen. Det behövs alltså två olika bakgrundsfärger och två texter för varje objekt av MyButton.

Definiera en metod toggleState() i MyButton. Toggle brukar betyda att man växlar mellan två tillstånd. Metoden ska ändra knappens tillstånd, alltså byta både färg och text till den andra.

Uppgift 3 – Knapp i fönstret

Utvidga uppgift1-programmet så att några knappar (minst 2 knapper) med olika färger och text uppgift 2 läggs i fönstret. Kör programmet.

  • Syns knapparna?
  • Vad händer när du klickar på knapparna?

Uppgift 4 – Knapp att trycka på

För att en knapptryckning ska ha effekt måste det finnas ett lyssnarobjekt som lyssnar på knappen. Lyssnarobjektet ska vara av en klass som implementerar interfacet ActionListener.

del A:  Betrakta följande UML-diagram:

MyFrameListener.jpg

Översätt UML-diagrammet till java-kod genom att låta MyFrame implementera ActionListener och låt dess actionPerformed() anropa toggleState(). Kom ihåg att koppla lyssnarobjektet till knapparna! Kontrollera att det fungerar!

⚠️ Ta en kopia av din kod så att du har den kvar för redovisningen. Annars kod för del B skriver över del A.

 

 

del B: Betrakta följande UML-diagram:

MyButtonListener.jpg

 

 

Översätt UML-diagrammet till java-kod genom att först ta bort all lyssnaregenskaper i koden så att det inte återstår skräpkod från del A.  Låt sedan MyButton implementera ActionListener och ha metoden actionPerformed som anropar toggleState(). Kontrollera att knapparnas tillstånd ändras oberoende av varandra.

⚠️ Ta en kopia av din kod så att du har den kvar för redovisningen.

 

 

del C : Betrakta följande UML-diagram:

 

EarListener-1.jpg

Översätt UML-diagrammet till java-kod genom att först ta bort all lyssnaregenskaper i koden så att det inte återstår skräpkod från tidigare deluppgifter. Skapa en klass Ear som implementerar interfacet ActionListener. Lägg till actionPerformed och se till att toggleState anropas i kroppen för actionPerformed. För att objekt av Ear ska kunna komma åt toggleState så behöver du se till att kopplingar mellan olika objekt sätts korrekt (⚠️observera dubbelriktade pilen mellan MyButton och Ear).

Att redovisa för grunduppgift

Visa upp, provkör och och förklara följande:
  • Knappkomponenten.
  • Minst två objekt av komponenten i ett fristående fönster.
    Gruppmedlemmarnas namn ska synas i fönstret.
  • Förklara hur du har översätt UML-diagrammet till koden. Hur har du översätter pilarna till kod.
  • Varför har du placerat metoderna och anrop till dem addActionListener,actionPerformed och toggleState där de är placerade i koden? (UML diagrammet saknar den information för att det är en uppgift till dig att välja mest lämplig plats i koden, taget att resten UML-diagrtammet har du översatt korrekt).
Visa hur knapptryckningar ändrar knappobjektens tillstånd.

Extrauppgift för högre betyg

Mål: 

  • Att få en ökad förståelse för händelser och lyssnare, hur en knapptryckning kan påverka "omvärlden". 
  • Att kunna ge indata till ett fristående program via kommandoraden.

 

Uppgift

Skriv ett program som liknar grunduppgiftens med ett fristående fönster och knappar. Antalet knappar ska anges på kommandoraden när programmet startas, t.ex. om man vill ha sex st knappar:

 

java labb1X 6

Knapparna ska ha olika texter men får ha samma färger. Programmet måste kunna ta emot ett godtyckligt antal knappar men det duger att att provköra med 3–4 stycken. Ge alla data på kommandoraden, t.ex. så här

 

java labb1X 3 On Off Run Stop Mamma Mia 

Nu ska tre knappar skapas. Den första har de två tillståndstexterna "On" och "Off", den tredje har "Mamma" och "Mia". Data från kommandoraden kommer till programmet som den String–array som är parameter till metoden main(). I klassen Integer finns metoden Integer.parseInt() som omvandlar String till int. Läs dokumentationen!

 

Programmets funktionalitet

Alla knappar ska visas i fönstret men när man trycker på en knapp ska alla andra knappar ändra utseende. Den man tryckte på ska inte ändras. Vilket av alternativen 4A, 4B eller 4C för lyssnarens placering passar bäst i den här uppgiften? Kan man tänka sig en helt annan konstruktion? Programmet måste fungera för godtyckligt antal knappar. Löses t.ex. genom att använda en array, alltså en struktur med typen MyButton[].

Att redovisa för extrauppgift

Visa upp, provkör och och förklara följande:
  • Progam enligt specifikationen ovan.

 

 

 

 

 

<

 

0
Inkludera en beskrivning
Ytterligare kommentarer:
Maxresultat för gradering till > poäng
Inkludera en bedömningstitel

Matris

Hitta matris
Inkludera en titel
Hitta en matris
Titel
Du har redan bedömt studenter med den här matrisen. Större ändringar kan påverka resultaten för deras uppgifter.
 
 
 
 
 
 
 
     
Det går inte att ändra en matris efter att du börjat använda den.  
Titel
Kriterier Bedömningar Poäng
Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
tröskel: 5 poäng
Redigera beskrivning av kriterium Ta bort kriterium rad
5 till >0 poäng Full poäng blank
0 till >0 poäng Inga poäng blank_2
Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
poäng
  / 5 poäng
--
Ytterligare kommentarer
Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
tröskel: 5 poäng
Redigera beskrivning av kriterium Ta bort kriterium rad
5 till >0 poäng Full poäng blank
0 till >0 poäng Inga poäng blank_2
Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
poäng
  / 5 poäng
--
Ytterligare kommentarer
Poängsumma: 5 av 5