Grafik, bilder och ljud

Storlek: px
Starta visningen från sidan:

Download "Grafik, bilder och ljud"

Transkript

1 Swing * Eclipse * Midlets * Android 5 Grafik, bilder och ljud Klassen JPanel JPanel som rityta Färger, texter och figurer Visa en bild Spela ett ljud JPanel som container Metoden repaint() Egna grafiska klasser Grafisk komponent som subklass till JPanel Sectordata 2010

2 Kap 5 : Sid 2 I detta kapitel använder vi JPanel-objekt (placerade i JFrames) för att bygga GUI-applikationer. En JPanel har en "rityta" där man kan skapa grafik och använda färger. Kapitlets inledande avsnitt tar upp grafik, färger och bilder. Vidare kan ett JPanel-objekt vara en container. I ett antal övningar används knappar och händelsehantering. Kapitlet avslutas med att vi skapar några egna grafiska klasser ur vilka vi kan skapa och visa objekt. Klasserna Asteroid, Streckgubbe, Flagga och NorFlagga samt Kula återkommer i senare kapitel.

3 Kap 5 : Sid 3 Klassen JPanel I föregående kapitel såg vi att objekt av typen JFrame används för att bygga windowsapplikationer. Ett sådant JFrame-objekt kan vi betrakta som bottenplattan i fönstret. Den är en container, det vill säga, vi kan placera ut grafiska komponenter (knappar, textboxar etcetera) på denna platta. I slutet på förra kapitlet lade vi ut ett JPanel-objekt, en panel, på "bottenplattan". Vi gav JFrame-objektet BorderLayout vilket gjorde att panelen kom att fylla hela fönsterytan. Nu är det så att JFrame-objekt har BorderLayout som standard (default), det vill säga, om vi inte väljer någon speciell layout manager så är det BorderLayout som gäller. Vi ska nu bekanta oss mer med klassen JPanel som är mycket användbar. Vi ska se hur den kan användas som rityta och hur den kan utgöra en container för andra komponenter. Övning: JPanel I denna första övning skriver vi en klass, MinJPanel, som ärver från JPanel. I Eclipse, skapa projektet Kap05, och i detta projekt, klassen MinJPanel. Skriv in koden: public class MinJPanel extends JPanel { public MinJPanel () { this.setbackground(color.red); Vidare: Skapa klassen Start2 och skriv denna kod: public class Start2 { JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("min JPanel!"); f.setdefaultcloseoperation(jframe.exit_on_close); MinJPanel p = new MinJPanel (); f.add(p); f.setvisible(true); I programmet Start2 sker följande: Ett JFrame-objekt skapas (fönstret, bottenplatttan) Fönstret får en viss storlek och placering samt en text på titelraden. Fönstret förses med en avstängningsfunktion. Vidare skapas ett objekt av vår klass MinJPanel, en panel Panelen läggs ut på bottenplattan med metoden add() Fönstret med innehåll görs synligt

4 Kap 5 : Sid 4 Provkör! Fönstret visas, och i detta ser man vårt JPanel-objekt med den röda bakgrundsfärgen. Panelen fyller fönstret helt. Ett JPanel-objekt Ett JFrame-objekt I GUI-applikationer används alltid ett JFrame-objekt som bottenplatta. I JFrames är BorderLayout standard. En adderad JPanel kommer att fylla hela fönstret. Man skriver alltså en egen JPanel-klass, en subklass till JPanel, och ger denna önskat utseende och innehåll. I övningen ovan skrev vi ett speciellt program som visade ett objekt ur vår JPanel-klass, MinJPanel.. Man behöver inte göra ett speciellt program för main()-metoden, utan denna kan, på välbekant sätt, vara en metod i vår JPanel-klass. Kopiera in main()-metoden i klassen MinPanel, och provkör!. public class MinJPanel extends JPanel { public MinJPanel () { this.setbackground(color.red); JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("min JPanel!"); f.setdefaultcloseoperation(jframe.exit_on_close); MinJPanel p = new MinJPanel (); f.add(p); f.setvisible(true); Vi ärver från JPanel I konstruktorn för MinJPanel anger vi specifika egenskaper och innehåll för vårt JPanel-objekt I main()-metoden skapas ett JFrameobjekt som ges grundläggande egenskaper. BorderLayout är default. Ett MinJPanel-objekt skapas och appliceras i JFrame-objektet, som görs synligt.

5 Kap 5 : Sid 5 JPanel som rityta Vi kallar ett JPanel-objekt, eller ett objekt ur en subklass till JPanel, för enkelhets skull för en panel. En panel har en metod som anropas och exekveras varje gång som panelen ska visas eller ritas om. Den metoden heter paintcomponent(graphics g) Anrop sker automatiskt vid omritning. (Vi ska inte anropa den i programkoden.) Metoden har en parameter, en referens till ett Graphics-objekt. Ett sådant objekt har en rad metoder för att rita och skriva på panelen. Klassen Graphics Ett JPanel-objekt, en panel, kan du tänka dig som en rityta som vi kan rita och skriva på. Vi behöver nu en "verktygslåda" med metoder för att rita och skriva på ytan. Det finns en klass som heter Graphics ( finns i paketet java.awt ) Ett objekt ur den klassen är en sådan "verktygslåda"! Med metoderna i ett Graphics -objektet kan vi nämligen rita och skriva på panelen. Till varje panel hör ett Graphics-objekt. (Du kan tänka dig att det till varje rityta finns en låda med ritverktyg.) paintcomponent(grafikobj){ Ett JPanel-objekt, panelen drawstring(...) drawrect(...) fillrect(...) med flera panelens grafikobjektet Vi såg ovan att metoden paintcomponent(graphics g) körs varje gång som panelen ska ritas (om). Metoden ska, som synes, ha ett argument, nämligen en referens till ett Graphics-objekt. Då paintcomponent(graphics g) anropas används som argument en referens till just det grafikobjekt som tillhör panelen. Exempel: Tänk dig att vi i en subklass till JPanel överskuggar paintcomponent()-metoden så här: public void paintcomponent(graphics g) { g.drawrect(50,75,100,50); Vad händer vid anrop av paintcomponent()? Jo, parametern g byts ut mot referensen till panelens grafikobjekt. Satsen g.drawrect(50,75,100,50); betyder då att metoden drawrect() i panelens grafikobjekt exekveras: En rektangel med bredden 100 och höjden 50 pixlar kommer att ritas, med övre vänstra hörnet 50 pixlar från vänsterkanten och 75 pixlar från överkanten. Anmärkning: Som namn på parametern brukar man välja bokstaven g (Så är det i nästan all javalitteratur ) Naturligtvis kan du välja vilket parameternamn som helst

6 Kap 5 : Sid 6 Övning: Överskugga paintcomponent() Ta fram filen MinJPanel.java och gör ändringar enligt nedan: public class MinJPanel extends JPanel { public MinJPanel () { this.setbackground(color.white); public void paintcomponent(graphics g){ super.paintcomponent(g); g.drawrect(50,75,100,50); g.drawstring("text på panelytan",20, 30); JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("min JPanel!"); f.setdefaultcloseoperation(jframe.exit_on_close); MinJPanel p = new MinJPanel (); f.add(p); f.setvisible(true); Spara och provkör! Kommentarer till koden: Vi använder här klassen Graphics som ligger i paketet java.awt, så vi får inte glömma att importera den. I konstruktorn sätter vi vit bakgrundsfärg ( Color.white ) så att figurer och texter syns tydligare. Låt oss se hur metoden paintcomponent()-metoden är omdefinierad: Först står satsen super.paintcomponent(g); JPanel är ju superklass till MinJPanel. Med satsen super.paintcomponent(g); anropas superklassens paintcomponent()-metod. I den metoden finns funktioner som bland annat ser till att panelens bakgrund ritas korrekt. Så: Ta som vana att alltid skriva satsen super.paintcomponent(g); först av allt när du omdefinierar paintcomponent()-metoden! Metoden g.drawrect(50,75,100,50); ritar en rektangel i positionen (50,75) vilket betyder att rektangelns övre vänstra hörn ligger 50 pixlar från vänsterkanten och 75 pixlar från överkanten. Bredden är 100 och höjden är 50 pixlar. Metoden g.drawstring("text på panelytan", 20, 30); skriver en text. Strängen "Text på panelytan" skrivs i positionen (20,30), det vill säga 20 pixlar från vänsterkanten och 30 pixlar från överkanten. Lägg till ytterligare en sats i paintcomponent()-metoden: g.drawstring("välkommen!", 20, 50); Exekvera! I nästa avsnitt får du lära dig fler av grafikobjektets metoder

7 Kap 5 : Sid 7 Färger, texter och figurer Färgkonstanter Klassen Color har ett antal färgkonstanter, det vill säga fördefinierade färger, som direkt kan användas, Du har redan använt några av dessa färgkonstanter, till exempel i satsen this.setbackground(color.white); i föregående övning. Här är alla färgkonstanterna: Color.orange Color.pink Color.cyan Color.magenta Color.yellow Color.black Color.white Color.gray Color.lightGray Color.darkGray Color.red Color.green Color.blue En konstant är (som vi förut har sett) en klassvariabel (av primitiv datatyp eller en referensvariabel) vars värde ej kan ändras. Så här är till exempel den röda färgen deklarerad i Color-klassen: public static final Color red = new Color(255,0,0); Övning: Metoden setcolor() Ett Graphics-objekt har metoden setcolor() vilken används till att färglägga det man ritar och skriver i paintcomponent()-metoden. Gör dessa tillägg i klassen MinJPanel : public void paintcomponent(graphics g){ super.paintcomponent(g); g.setcolor(color.blue); g.drawrect(50,75,100,50); g.setcolor(color.red); g.drawstring("text på panelytan",20, 30); g.drawstring("välkommen!", 20, 50); Provkör! Det är den "senast" satta färgen är den som gäller: Rektangeln ritas med blå färg, texten skrivs med röd färg. Egna färger Vi kan skapa egna färger genom att skapa objekt ur klassen Color. Antag att vi deklarerat ett Color-objekt, farg : Vi kan instansiera objektet farg exempelvis så här: Color farg; farg = new Color(255,0,0); Vårt färgobjekt kan sedan användas som argument i metoder för färgsättning, till exempel this.setbackground(farg); g.setcolor(farg); Det är vanligt att man använder ett parameterlöst objekt som argument, till exempel: this.setbackground( new Color(255,0,0) );

8 Kap 5 : Sid 8 Color-konstruktorn tar som synes tre argument, tre heltal i intervallet En färg byggs upp av tre grundfärger : Rött, grönt och blått. Varje grundfärg representeras av ett tal i intervallet Dessa tal bestämmer mängden rött, grönt respektive blått. new Color(255,0,0); new Color(0,255,0); new Color(0,0,255); new Color(255,0,255); new Color(255,255,255); new Color(0,0,0); new Color(128,128,128); // röd färg // grön färg // blå färg // violett färg // vit färg // svart färg // grå färg Övning: Skapa egna färger Fortsätt med programmet MinJPanel och gör ändringar enligt nedan: public class MinJPanel extends JPanel { Color farg1, farg2; public MinJPanel () { this.setbackground(color.white); farg1 = new Color(255,0,255); farg2 = new Color(255,255,0); public void paintcomponent(graphics g){ super.paintcomponent(g); g.setcolor(farg1); g.drawrect(50,75,100,50); g.setcolor(farg2); g.drawstring("text på panelytan",20, 30); g.drawstring("välkommen!", 20, 50); JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("min JPanel!"); f.setdefaultcloseoperation(jframe.exit_on_close); MinJPanel p = new MinJPanel (); f.add(p); f.setvisible(true); Provkör! Rektangeln ritas med violett färg, och texten blir gul. Experimentera med egna kombinationer av rött, gult och blått. Här är som exempel några olika nyanser av blått: new Color(150,150,255); new Color(0,0,60); Som du ser är det tredje argumentet störst i båda exemplen varför den blå färgen dominerar i båda.

9 Kap 5 : Sid 9 Övning: Rita figurer Ändra koden i klassen MinJPanel till följande: public class MinJPanel extends JPanel { private Color rod, gron, bla; public MinJPanel () { this.setbackground(color.white); rod = new Color(255,0,0); // röd gron = new Color(0,255,0); // grön bla = new Color(0,0,255); // blå public void paintcomponent(graphics g){ super.paintcomponent(g); g.drawline(10,10,100,100); g.setcolor(gron); g.drawrect(100,10,130,170); g.setcolor(bla); g.drawoval(50,50,120,100); g.setcolor(rod); g.drawstring("välkommen till JAVA",25,25); g.drawstring("välkommen till JAVA",25,45);... // oförändrat Exekvera! Här använder vi ytterligare några metoder i Graphics-objektet ("målarlådan"). Metoderna används för att rita figurer av olika slag. Alla metoderna har fyra heltalsargument som anger hur figurerna ska placeras: Metoden drawline(x1,y1,x2,y2) ritar en linje från punkten (x1,y1) till punkten (x2,y2), i vårt fall alltså från (10,10) till (100,100). Linjen blir svart eftersom ingen färg är vald. Metoden drawrect(x,y,b,h) har du redan bekantat dig med: Den ritar en rektangel med övre vänstra hörnet i (x,y) med bredden b och höjden h, i vårt fall övre vänstra hörnet i (100,10) och med bredden 130 och höjden 170 pixlar. Metoden drawoval(x,y,b,h) ritar en ellips inskriven i den tänkta rektangel som har övre vänstra hörnet i (x,y) och med bredden b och höjden h, i vårt fall övre vänstra hörnet i (50, 50) bredd 100 och höjd 100. Så här alltså: (50, 50) Metoden setcolor() sätter färg på de ritade figurerna.

10 Kap 5 : Sid 10 Nu: Byt ut drawrect mot fillrect och drawoval mot filloval Provkör! (Figurerna är nu fyllda med den valda färgen ) Byt ut g.fillrect(100,10,130,170) mot g.fillroundrect(100,10,130,170,20,20) Exekvera! (Rektangeln har nu rundade hörn ) Om man ökar talen 20 får man mer avrundade hörn. Testa gärna! Övning: Metoderna getwidth() och getheight() Vi fortsätter att experimentera med klassen MinJPanel. Lägg till dessa satser i paintcomponent()-metoden: g.setcolor(color.yellow); g.fillrect(0,100, this.getwidth(), 50); Provkör! En gul rektangel med samma bredd som fönstret visas som ett horisontellt band tvärs över fönstret. Metoden this.getwidth()returnerar nämligen fönstrets aktuella bredd (i pixlar). Testa! Förändra fönstrets storlek (musmarkör över ett av fönstrets hörn, vänster musknapp nedtryckt och dra). Den gula rektangelns bredd varierar med fönstrets bredd. Metoden getheight() returnerar på motsvarande sätt panelens höjd. Rita ytterligare en rektangel som visas som ett gult vertikalt band över fönstret. Rektangelns höjd ska variera med fönstrets aktuella höjd. Vad skulle hända om satserna nedan exekverades? g.setcolor(color.cyan); g.fillrect(0,100, this.getwidth(), this.getheight());

11 Kap 5 : Sid 11 Om koordinater på en ritbar yta Från matematiken är vi vana vid att x får större värden åt höger längs x-axeln och att y växer uppåt I de flesta grafiska miljöer ligger origo, alltså pixeln eller bildpunkten med bildskärmskoordinaterna ( 0, 0 ) längst upp till vänster. x får större värden ju längre åt höger vi kommer men: y växer nedåt. Så här: ( 0, 0) Allt större x-värden ( 100, 50 ) (100, 80 ) Allt större y-värden Övning: Stapeldiagram Metoden g.fill3drect(x,y,b,h,true) ger en viss (dock blygsam) 3D-effekt. x, y, b och h fungerar som för fillrect. Det fjärde argumentet ska ha ett boolskt värde (dvs skriv antingen true eller false ) (true ger "upphöjning", false ger "nedsänkning") I projektet Kap05 skapa klassen Stapeldiagram Skriv ett GUI-program som ritar tre staplar med olika färger på staplarna. Se bild nedan. Använd metoden g.fill3drect() Ett tips: Om du vill rita en rektangel med nedre vänstra hörnet i punkten (x,y) och som har bredden b och höjden h kan du skriva så här: g.fill3drect(x,y,b,-h,true); alltså med ett minustecken framför h. Stapeln kommer då att ritas "uppåt".

12 Kap 5 : Sid 12 Övning: Blomma I projektet Kap05 skapa klassen Blomma. Skriv ett GUI-program, som visar en blomma (se figur nedan). Använd blå, röda, gröna och gula cirklar, och en (smal) grön rektangel. Sektorer och bågar Med medoden fillarc( x, y, bredd, hojd, u, v ) kan man rita en sektor. Metoden har sex parametrar: Punkten med koordinaterna ( x, y ) anger cirkelsektorns placering på appletytan. Man får tänka sig sektorn som en del av en ellips som i sin tur är inskriven i en rektangel. Punkten (x, y) är denna rektangels övre, vänstra hörn. Parametern bredd är den tänkta rektangelns bredd, och hojd är den tänkta rektangelns höjd Tänk dig linjen (radien) från ellipsens mittpunkt horisontellt rakt ut åt höger. Denna radie motsvarar 0 (noll) grader. Tänk dig att du vrider radien ett antal grader moturs. Du vrider den då ett antal grader i positiv led. (Vinkelangivelser fungerar alltså precis som i matematiken) Parametern u är det gradantal där sektorn "börjar". Parametern v är gradantalet för själva sektorn. Figuren visar hur det fungerar: ( x, y ) v u 0 o hojd bredd

13 Kap 5 : Sid 13 Övning: Ett cirkeldiagram I projektet Kap05 skapa klassen Cirkeldiagram Skriv ett GUI-program som visar ett cirkeldiagram. Använd paintcomponent() -metoden nedan. public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(color.blue); g.fillarc(50,50, 200, 200, 0, 90); g.setcolor(color.yellow); g.fillarc(50,50, 200, 200, 90, 120); g.setcolor(color.red); g.fillarc(50,50, 200, 200, 210, 150); Kör! Bredd och höjd är lika (200). Vi får alltså en cirkel: blå gul röd Den blå sektorn börjar vid 0 grader och sträcker sig 90 grader moturs. Den gula sektorn börjar vid 90 grader och sträcker sig 120 grader moturs. Den röda sektorn börjar vid ( ) grader = 210 grader och sträcker sig 150 grader moturs. Experimentera! Ändra vinklarna så att diagrammet visar en annan fördelning.

14 Kap 5 : Sid 14 Textfonter I förra kapitlet såg vi hur man kan ändra textens utseende i en JLabel med metoden setfont(). Vi använder samma metod för att påverka texter som skrivs med grafikobjektet. Övning: Vi testar fonter I projektet Kap05 skapa klassen FontTest Skriv ett GUI-program som visar några texter. Skriv in denna paintcomponent()-metod: public void paintcomponent(graphics g){ super.paintcomponent(g); g.setcolor(color.red); g.setfont(new Font("Times New Roman",Font.PLAIN,10)); g.drawstring("java - forever!",100,100); g.setfont(new Font("Courier New",Font.BOLD,20)); g.drawstring("java - forever!",100,150); g.setfont(new Font("Arial",Font.ITALIC,30)); g.drawstring("java - forever!",100,200); Vilka typsnitt finns? I förra kapitlet fanns ett program som visade vilka typsnitt som finns i din utvecklingsmiljö. Här kommer en variant som skriver typsnitten till textfilen typsnitt.txt Den kommer att finnas i mappen för det projekt där du placerar detta program. import java.io.*; public class Typsnitt{ public static void main(string[] args){ GraphicsEnvironment ge ; ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] font = ge.getavailablefontfamilynames(); try{ PrintWriter ut = new PrintWriter(new BufferedWriter(new FileWriter("typsnitt.txt"))); for (int i = 0; i < font.length; i++) { ut.println(font[i]); ut.close(); catch(exception e){ (Programmet innehåller kod som vi för tillfället avstår från att förklara.) Provkör gärna och öppna sedan filen typsnitt.txt

15 Kap 5 : Sid 15 Visa en bild Vi ska nu se hur man kan visa en bild i ett javaprogram. Man skapar ett objekt ur klassen ImageIcon som associeras till den aktuella bildfilen. Man ritar bilden i paintcomponent()-metoden med ImageIcon-metoden painticon(). Övning: Visa en bild På Java-javisst-sajten finns bilden jumbo.gif Kopiera den till mappen Kap05 i ditt workspace. Du kan förstås använda en egen bild. Den ska ha formatet gif, jpg eller png I projektet Kap05, skapa klassen VisaBild. Skriv denna kod: public class VisaBild extends JPanel { ImageIcon jumbo; public VisaBild () { jumbo = new ImageIcon("jumbo.gif"); this.setbackground(color.white); public void paintcomponent(graphics g){ super.paintcomponent(g); jumbo.painticon(this, g, 50, 50); JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("visa Bild"); f.setdefaultcloseoperation(jframe.exit_on_close); VisaBild p = new VisaBild (); f.add(p); f.setvisible(true); Provkör! Kommentarer till koden: Vi deklarerar här ett objekt, jumbo, av klassen ImageIcon. I konstruktorn skapas ImageIcon-objektet med bildfilens namn som parameter. I metoden paintcomponent(graphics g) använder vi ImageIcon metoden painticon() : jumbo.painticon(this, g, 50, 50); bild1 ritas då i position (50, 50) i detta (this) JPanel-objekt. Anmärkning: Ett alternativt sätt att visa bilder är att skapa ett Image-objekt så här: Image jumbo = Toolkit.getDefaultToolkit().getImage("jumbo.gif"); Ett Image-objekt kan visas i paintcomponent()- metoden med Graphics-metoden drawimage() så här: g.drawimage(jumbo,x,y,this);

16 Kap 5 : Sid 16 Spela ett ljud Nästa övning visar hur man kan spela upp ett ljud i en GUI-applikation. Övning: Spela ljud Skapa en mapp, ljud, på (exempelvis) enheten C: Kopiera ljudfiler av formatet au eller wav till mappen Kap05 i ditt workspace. (Det finns ett antal filer på Java-javissts hemsida) I projektet Kap05, skapa klassen SpelaLjud. Skriv denna kod: import java.applet.*; public class SpelaLjud extends JPanel { AudioClip ac; public SpelaLjud() { try{ ac = Applet.newAudioClip(new java.net.url("file:wooeep.au")); catch(exception exc){ System.out.println("Hittar ej"); ac.loop(); JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("spela Ljud"); f.setdefaultcloseoperation(jframe.exit_on_close); SpelaLjud p = new SpelaLjud (); f.add(p); f.setvisible(true); Provkör! Kommentarer till koden: I nästa kapitel ska vi lära oss att skriva java-applets. Då kommer vi alltid att behöva importera paketet java.applet. Som synes har vi gjort det även i denna övning, trots att vi inte skapar en applet här. Det som har med ljud att göra råkar finnas i paketet java.applet, och därför måste vi importera paketet i sådana sammanhang. För att hantera ett ljud behövs ett AudioClip-objekt. Vi deklarerar här ett sådant, ac. Ett AudioClip-objekt skapas med metoden newaudioclip() som är en klassmetod i klassen Applet. Som argument i metoden newaudioclip() anges ett URL-objekt som ger webbadressen till ljudfilen. Vi placerar ljudfilen i projektmappen då bli adressen som i övningen ovan. Metoden newaudioclip()måste ligga i en try catch konstruktion (så att eventuella fel tas om hand) Ljudfilen startas med metoden play(). Metoden loop(), som används ovan, gör att filen spelas om och om igen. Vi ska i en kommande övning även använda metoden stop() som stoppar uppspelning.

17 Kap 5 : Sid 17 JPanel som container En GUI-applikation har, som bekant, alltid ett JFrame-objekt som bottenplatta. I kapitel 4 adderade vi komponenter (knappar, labels etc) direkt till en JFrame (till bottenplattan ), det vill säga, vi använde JFrame-objekt som container. För att erhålla FlowLayout fick vi skriva satsen setlayout(new Flowlayout); Du känner till att FlowLayout innebär att komponenter placeras centrerat, och uppifrån och ned, i den ordning de adderas till containern. Ett JFrame-objekt Om vi vill använda FlowLayout i en JFrame måste vi skriva satsen setlayout(new Flowlayout); I JFrames är nämligen borderlayout standard. (Om inget annat sägs gäller borderlayout.) Vi har i detta kapitel låtit JFrame-objekt utgöra bottenplatta till vilken vi adderat JPanel-objekt. Detta fyller hela fönstret på grund av att JFrames har BorderLayout om inget annat begärs. Vi har använt JPanel-objekt som rityta på vilken vi kan rita figurer, skriva text och visa bilder. Man kan också använda en JPanel som container, det vill säga placera ut grafiska komponenter på den. En JPanel har FlowLayout som standard. Vi behöver alltså inte ha med setlayout()-metoden som väljer FlowLayout. Ett JPanel-objekt I JPanels är FlowLayout standard. Adderade komponenter kommer att placeras centrerade och uppifrån och ned. Ett JFrame-objekt I GUI-applikationer används alltid ett JFrame-objekt som bottenplatta. I JFrames är BorderLayout standard. En adderad JPanel kommer att fylla hela fönstret. Vi ska nu i några övningar se hur en JPanel kan användas som container: På nästa sida finns en övning där vi lägger in en knapp på panelytan. När man trycker på knappen ändras panelens bakgrundsfärg. Därefter följer en övning där vi lägger in knappar som startar och stoppar ett ljud. I avsnittet Metoden repaint() lär vi oss hur man med knappar och andra komponenter kan påverka grafik och färger som genererats i pantcomponent()-metoden.

18 Kap 5 : Sid 18 Övning: Byt bakgrundsfärg I projektet Kap05, skapa klassen BytBakgrund. Skriv denna kod: import java.awt.event.*; public class BytBakgrund extends JPanel implements ActionListener { Button b; public BytBakgrund () { this.setbackground(color.red); b = new Button("Blå bakgrund!"); add(b); b.addactionlistener(this); public void actionperformed(actionevent e){ this.setbackground(color.blue); JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("måla om"); f.setdefaultcloseoperation(jframe.exit_on_close); BytBakgrund p = new BytBakgrund(); f.add(p); f.setvisible(true); Här har vi deklarerat och skapat ett Button-objekt och lagt ut detta på panelytan med metoden add() Vidare har vi sett till att händelsehanteringen fungerar: - Importerat paketet java.awt.event - Implementerat gränssninttet ActionListener - Lagt lyssnare på knapparna med metoden addactionlistener(this) - Lagt till metoden public void actionperformed(actionevent e){... I denna finns satsen this.setbackground(color.blue);som byter bakgrundsfärg till blå. Spara och provkör! Lägg sedan till ännu en knapp. Den ska visa texten "Röd bakgrund!". Komplettera koden i händelsehanteraren så att ytan åter blir röd då man trycker på den nya knappen! Övning: Starta/stoppa ljud I programmet SpelaLjud lärde vi oss hur man kunde spela upp ett ljud. Vi kompletterar: Deklarera och skapa två Button-objekt och lägg ut dessa på panelytan med metoden add() Gör så att händelsehantering fungerar: Importera paketet java.awt.event Implementera gränssninttet ActionListener Lägg lyssnare på knapparna med metoden addactionlistener(this) Låt actionperformed()-metoden innehålla dessa satser: if(e.getsource() == b1) ac.loop(); if(e.getsource() == b2) ac.stop(); Spara och provkör! Nu kan ljudet startas / stoppas med knapparna.

19 Kap 5 : Sid 19 Metoden repaint() Metoden paintcomponent() exekveras automatiskt när ett JPanel-objekt visas. Antag att vi i denna metod ritat figurer, satt vissa färger etcetera. Sedan vill vi rita om panelytan, kanske byta position för en figur eller byta färg. Hur bär man sig åt för att köra metoden paintcomponent() igen? Övning: Metoden repaint() I projektet Kap05, skapa klassen MalaOm. Skriv denna kod: import java.awt.event.*; public class MalaOm extends JPanel implements ActionListener { Button b; Color farg; public MalaOm() { this.setbackground(color.black); farg = Color.red; b = new Button("Byt färg!"); add(b); b.addactionlistener(this); public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(farg); g.filloval(10,50,350,200); public void actionperformed(actionevent e){ farg = Color.blue; JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("måla om"); f.setdefaultcloseoperation(jframe.exit_on_close); MalaOm p = new MalaOm (); f.add(p); f.setvisible(true); Studera koden. Vår avsikt är att en fylld oval, som ritats i paintcomponent()-metoden, och som från början är röd, ska bli blå när vi trycker på knappen. Provkör! Tryck på knappen! Inget händer. Gör nu ett tillägg i actionperformed()-metoden så att den ser ut så här: public void actionperformed(actionevent e){ farg = Color.blue; repaint(); Provkör! Metoden repaint() anropar metoden paintcomponent()på nytt. Denna gång målas ovalen blå!

20 Kap 5 : Sid 20 Övning: Flytta Jumbo Vi gör tillägg i klassen VisaBild (som vi skrev tidigare i detta kapitel): Deklarera en heltalsvariabel, x, som initieras med värdet 50. ( int x = 50; ) Utnyttja variabeln x när du bestämmer placering för bilden: bild1.painticon(this, g, x, 50); Deklarera och skapa två Button-objekt och lägg ut dessa på panelytan med metoden add() Gör så att händelsehantering fungerar, det vill säga: Importera paketet java.awt.event Implementera gränssninttet ActionListener Lägg lyssnare på knapparna med metoden addactionlistener(this) Låt actionperformed()-metoden innehålla dessa satser: if( e.getsource() == b1) x = x - 10 ; if( e.getsource() == b2) x = x + 10 ; repaint(); Provkör! När du trycker på knapparna ändrar Jumbo sin position i x-led! Lägg gärna in ytterligare två knappar med vilka bilden kan flyttas uppåt respektive nedåt. Övning: Cirkeln igen! I projektet Kap05, skapa klassen Cirkeln2. I föregående kapitel fanns Övning: Cirkeln Man matar in en radie i ett JTextField och trycker på en JButton (eller trycker på [ENTER] ) Då beräknas cirkelns omkrets och area och dessa värden skrivs ut i var sin JLabel. I kapitlets slut lade vi till felhantering och avrundning till tre decimaler. Gör en variant på programmet Cirkeln, denna gång med en JPanel som container. Lägg till metoden public void paintcomponent(graphics g) {... och gör så att cirkelskivan ritas upp på panelytan i samband med att omkrets och area skrivs ut. Cirkelskivans radie ska vara det antal pixlar som anges av talet som matas in som radie (avrundtat till heltal). Försök lösa uppgiften på egen hand! (Lösningsförslag på nästa sida ) Övning: Stapeldiagram igen! Tidigare i detta kapitel finns övningen Stapeldiagram. Gör tillägg i klassen Stapeldiagram så att tre tal kan matas in. När man trycker på en knapp ska ett stapeldiagram visas. Staplarnas höjd ska vara proportionella mot de inmatade talen. Övning: Cirkeldiagram igen! Tidigare i detta kapitel finns övningen Ett cirkeldiagram Gör tillägg i klassen Cirkeldiagram så att tre tal kan matas in. När man trycker på en knapp ska ett cirkeldiagram visas. Diagrammet ska visa hur de tre talen fördelas på talens summa. Hjälp: Om de tre talen är a, b och c så beräknas cirkelsektorernas vinklar, u, v och w, så här: u = a*360/(a+b+c) ; v = b*360/(a+b+c) ; w = c*360/(a+b+c)

21 Kap 5 : Sid 21 // Cirkeln2 import java.awt.event.*; public class Cirkeln2 extends JPanel implements ActionListener{ JButton butt; JTextField tf; JLabel lbl_ledtext, lbl_area, lbl_omkr; double radie, area, omkrets; public Cirkeln2 () { butt = new JButton("OK"); lbl_ledtext=new JLabel("Ange radie"); tf = new JTextField(10); lbl_area= new JLabel(); lbl_omkr= new JLabel(); add(lbl_ledtext); add(tf); add(butt); butt.addactionlistener(this); tf.addactionlistener(this); add(lbl_area); add(lbl_omkr); this.setbackground(color.white); public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(color.red); g.filloval(50,70,(int)(radie*2),(int)(radie*2)); public void actionperformed(actionevent e){ try{ radie = Double.parseDouble(tf.getText()); area = radie*radie*math.pi; omkrets = 2* Math.PI * radie; lbl_area.settext( String.format("Area: %8.3f",area)); lbl_omkr.settext(string.format(" Omkrets: %5.3f",omkrets)); catch(numberformatexception nfe){ lbl_area.settext("felaktig inmatning!"); lbl_omkr.settext(""); radie=0; repaint(); JFrame f = new JFrame(); f.setsize(300, 300); f.setlocation(100,100); f.settitle("cirkeln"); f.setdefaultcloseoperation(jframe.exit_on_close); Cirkeln2 p = new Cirkeln2 (); f.add(p); f.setvisible(true);

22 Kap 5 : Sid 22 Egna grafiska klasser Här är koden till programmet EnAsteroid public class EnAsteroid extends JPanel { int xpos, ypos, diam; public EnAsteroid () { xpos = 40; ypos = 50; diam = 60; this.setbackground(new Color(0,0,60)); public void paintcomponent(graphics g){ super.paintcomponent(g); g.setcolor( new Color(220,220,150 ) ); // grå-gul g.filloval(xpos, ypos,diam, diam ); int diam2 = diam - 5; g.setcolor( new Color(255,255,190 ) ); // vit-gul g.filloval(xpos, ypos, diam2, diam2 ); JFrame f = new JFrame(); f.setsize(230, 230); f.setlocation(100,100); f.settitle("visaasteroid"); f.setdefaultcloseoperation(jframe.exit_on_close); VisaAsteroid p = new VisaAsteroid(); f.add(p); f.setvisible(true); Du behöver inte provköra det här programmet, men studera koden så att du förstår den. När vi kör programmet visas en himlakropp, en asteroid. Vi har ritat den med en grå-gul cirkelskiva och, framför denna, en lite mindre vit-gul cirkelskiva. Antag nu att vi skulle vilja rita fler asteroider, med varierande storlek, och i olika positioner. Detta är förstås möjligt att göra genom att lägga till fler g.filloval()-satser i paintcomponent()- metoden med varierande värden på xpos, ypos och diam. Med många asteroider skulle paintcomponent()-metoden bli ganska stor och onödigt komplicerad. Det skulle vara enklare att skapa en klass, Asteroid, som har instansvariabler för diameter och position., och en metod som kan rita figuren. Sedan kunde vi låta ett program instansiera och visa önskat antal Asteriodobjekt. I nästa övning ska vi skapa klassen Asteroid och programmet VisaAsteroider.

23 Kap 5 : Sid 23 Övning: Asteroid Nytt projekt, Kap05_Asteroid. Skapa klassen Asteroid Skriv in koden: public class Asteroid { private int xpos, ypos, diam; public Asteroid( int x, int y, int d ) { xpos = x; ypos = y; diam = d; public void visa(graphics g) { g.setcolor( new Color(220,220,150 ) ); // grå-gul g.filloval(xpos, ypos, diam, diam ); int diam2 = diam - 5; g.setcolor( new Color(255,255,190 ) ); // vit-gul g.filloval(xpos, ypos, diam2, diam2 ); Klassen har instansvariabler för placering: xpos och ypos, samt för diameter, diam. Klassen har en konstruktor med tre parametrar. Vid instansiering får de tre instansvariablerna sina värden. Metoden visa(graphics g) har ett grafikobjekt som parameter. När metoden anropas från ett javaprograms paintcomponent()-metod så kommer grafikmetoderna att exekveras, det vill säga asteroiden ritas. Vi ska nu låta klassen, programmet, VisaAsteroid skapa två asteroidobjekt och rita dem: Skapa klassen VisaAsteroid som subklass till JPanel. Skriv av (eller kopiera) koden och provkör! public class VisaAsteroid extends JPanel { private Asteroid ast1, ast2; public VisaAsteroid () { ast1 = new Asteroid(40, 50, 60); ast2 = new Asteroid(110, 100, 80); this.setbackground(new Color(0,0,40)); public void paintcomponent(graphics g){ super.paintcomponent(g); ast1.visa(g); ast2.visa(g); JFrame f = new JFrame(); f.setsize(250, 250); f.setlocation(100,100); f.settitle("visaasteroid"); f.setdefaultcloseoperation(jframe.exit_on_close); VisaAsteroid p = new VisaAsteroid(); f.add(p); f.setvisible(true);

24 Kap 5 : Sid 24 I applikationen instansieras objekt av klassen Asteroid. Då ett objekt, ast1, instansieras med satsen ast1 = new Asteroid(40, 50, 60); skapas ett Asteroid-objekt med positionen ( 40, 50) och diametern 60 pixels. När metoden ast1.visa(g) anropas så ritas figuren på panelytan. En asteroid visas som en grågul cirkelskiva och, på denna, en blekgul cirkelskiva något förskjuten uppåt-vänster (så att viss 3D-effekt skapas ) (40,50) diam diam Lägg gärna till fler asteroider! Övning: StreckGubbe Nytt projekt, Kap05_Gubbe. Skriv en klass, StreckGubbe Ett objekt ska kunna instansieras med: gubbe = new StreckGubbe(x, y, farg); Skriv också ett program som instansierar och visar några gubbar. Vi kommer senare i kursen att använda den här typen av egendefinierade grafiska klasser, klasser med visa(g)-metod, framför allt i applikationer med animeringar.

25 Kap 5 : Sid 25 Grafisk komponent som subklass till JPanel Vi har lärt oss hur man instansierar komponenter som objekt ur klasserna JButton, JTextField, JLabel och JPanel. Man skapar komponenterna och placerar sedan ut dem med metoden add(). Vi ska i övningen nedan skriva en egen grafisk klass som subklass till JPanel, skapa två objekt ur klassen och placera dem i en GUI-applikation med add()-metoden. Övning: Nordisk flagga Vi ska skriva en klass, Flagga som subklass till JPanel. Ett objekt ur klassen ska visa en nordisk flagga. Vi ritar förstås flaggan i paintcomponent()-metoden. Skapa nytt projekt, Kap05_Flaggor. Skriv klassen Flagga enligt denna kod: public class Flagga extends JPanel { private int bredd = 90, hojd = 60; private Color bakfarg, korsfarg; public Flagga(Color c1, Color c2 ) { bakfarg = c1; korsfarg = c2; this.setbackground(bakfarg); this.setpreferredsize(new Dimension(bredd,hojd)); public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(korsfarg); g.fillrect(0, hojd/2-hojd/12, bredd, hojd/6); g.fillrect(bredd/3-hojd/12, 0, hojd/6, hojd); Klassen har instansvariablerna bredd och hojd som bestämmer flaggans storlek. I konstruktorn finns metoden this.setpreferredsize(new Dimension(bredd,hojd)); vilken gör att panelobjektet visas i önskad storlek. Annars visas ju ett JPanel-objekt, med FlowLayout, som en liten rektangel (Kap 4 sid 22) Klassen har också instansvariablerna bakfarg och korsfarg som bestämmer flaggans färger. Vilka färger som används anges som parametrar i konstruktorn: bakfarg sätts som panelens bakgrundsfärg med metoden this.setbackground(bakfarg);. korsfarg väljs som färg i paintcomponent()-metoden med metoden g.setcolor(korsfarg); och därefter ritas korset med g.fillrect()-metoder. I samma projekt, skriv nu klassen (programmet) VisaFlaggor som en subklass till JPanel. I programmet: Deklarera två objekt ur klassen Flagga, sweflag och danflag. I konstruktorn ska objekten instansieras, sweflag med färgerna blått och gult, danflag med rött och vitt. Objekten ska läggas ut på panelytan med metoden add() Spara och exekvera. Testa att ändra fönstrets storlek. Lösningsförslag på nästa sida

26 Kap 5 : Sid 26 public class VisaFlaggor extends JPanel { Flagga sweflag,danflag; public VisaFlaggor () { sweflag = new Flagga(Color.blue, Color.yellow); danflag = new Flagga(Color.red, Color.white); this.setbackground(new Color(200,220,255)); add(sweflag); add(danflag); JFrame f = new JFrame(); f.setsize(150, 230); f.setlocation(100,100); f.settitle("visaflaggor"); f.setdefaultcloseoperation(jframe.exit_on_close); VisaFlaggor p = new VisaFlaggor(); f.add(p); f.setvisible(true); Skapa ytterligare ett Flagga-objekt, finflag, som visar finska flaggan. Övning: Subklass till Flagga Skapa klassen NorFlagga som en subklass till Flagga I klassen Flagga, ändra private till protected och lägg till en parameterlös konstruktor: protected int bredd = 90, hojd = 60; protected Color bakfarg, korsfarg; public Flagga(){ // NorFlagga.java public class NorFlagga extends Flagga{ private Color korsfarg2; public NorFlagga(Color c1, Color c2, Color c3 ) { bakfarg = c1; korsfarg = c2; korsfarg2 = c3; this.setbackground(bakfarg); this.setpreferredsize(new Dimension(bredd,hojd)); public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(korsfarg); g.fillrect(0, hojd/2-6, bredd, 12); g.fillrect(bredd/3-6, 0, 12, hojd); g.setcolor(korsfarg2); g.fillrect(0, hojd/2-3, bredd, 6); g.fillrect(bredd/3-3, 0, 6, hojd); Gör tillägg i programmet VisaFlaggor : Skapa norflag och iceflag (norska och isländska flaggor) som objekt ur klassen NorFlagga och placera ut med add()-metoden.

27 Kap 5 : Sid 27 Övning: En komponent som visar en bild Skapa klassen Kap05_Kulan. På JavaJavisst + :s hemsida finns bilden kula.jpg. Kopiera den filen till mappen Kap05_Kulan i Utforskaren. Skapa klasen Kula med denna kod: public class Kula extends JPanel{ private ImageIcon bild; int tal; public Kula(int t) { bild = new ImageIcon("kula.jpg"); tal = t; this.setpreferredsize(new Dimension(80,80)); public void paintcomponent(graphics g){ bild.painticon(this, g, 0, 0); g.setcolor(color.black); g.setfont(new Font("Arial",Font.BOLD,20)); g.drawstring("" + tal, 48, 55 ); I denna klass skapas och visas bilden kula.jpg Konstruktorn har ett heltal som parameter. Det heltal som anges som argument vid instansieringen kommer att tilldelas instansvariabeln tal Värdet på tal skrivs ut på bilden (det vill säga på kulan.) Skapa klassen VisaKula med denna kod: public class VisaKula extends JPanel { private Kula kula ; private Button butt; private int k; public VisaKula() { this.setbackground(color.white); kula = new Kula(17); add(kula); JFrame f = new JFrame(); f.setdefaultcloseoperation(jframe.exit_on_close); f.setsize(200, 200); f.setlocation(100,100); f.settitle("visakula"); VisaKula p = new VisaKula(); f.add(p); f.setvisible(true); I programmet deklareras ett Kula-objekt, som instansieras och visas. Provkör! Vi kommer i kursen att använda den här typen av grafiska klasser, klasser som är subklasser till JPanel, när ett objekt ska vara muskänsligt (t.ex. klickbart), när ett objekt ska visa en bild, och även i vissa animeringar.

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Rita Egna Bilder, Timer

Rita Egna Bilder, Timer Rita Egna Bilder, Timer Josef Svenningsson November 27, 2012 Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent.

Läs mer

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

Läs mer

Applets med komponenter

Applets med komponenter 5 Applets med komponenter Knappar Om gränssnitt (interface) Händelser Måla om appletytan Etiketter och textrutor Förvandla strängar till tal Aritmetik Omvandla datatyper med cast Felhantering Kap 5: Sid

Läs mer

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

Läs mer

GUI-program med Swing

GUI-program med Swing Swing * Eclipse * Midlets * Android 4 GUI-program med Swing Javas AWT- och Swing-paket Ett GUI-program En JLabel En JButton Om gränssnitt Händelsehantering Skriv in text Mata in tal Aritmetik Typomvandling

Läs mer

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

Arrayer. Indexerade variabler, arrayer, fält Statistiska mått Sortering Sökalgoritmer Rita polygoner Objektarrayer Starta program med argument

Arrayer. Indexerade variabler, arrayer, fält Statistiska mått Sortering Sökalgoritmer Rita polygoner Objektarrayer Starta program med argument Swing * Eclipse * Midlets * Android 9 Arrayer Indexerade variabler, arrayer, fält Statistiska mått Sortering Sökalgoritmer Rita polygoner Objektarrayer Starta program med argument Sectordata 2010 Kap 9

Läs mer

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

Föreläsning 14: Grafik & mera händelsehantering

Föreläsning 14: Grafik & mera händelsehantering TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Mer om grafiska komponenter. Händelsestyrda program

Mer om grafiska komponenter. Händelsestyrda program Layout Managers TDA143 I1 Programmerade system Föreläsning 14 (OH-bilder 10) Mer om grafiska komponenter. Händelsestyrda program Utplaceringen av komponenter i en behållare styrs med en Layout Manager.

Läs mer

Frames, menyer och GUI-program

Frames, menyer och GUI-program 15 Frames, menyer och GUI-program Frames En frame-klass Om konstruktorer - igen Funktionella fönster Menyer Popupmenyer GUI-applikationer Dialogrutor Printerutskrift Kap 15: Sid 2 Frames Redan i kapitel

Läs mer

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Datateknik A, Syfte: Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Att läsa: Lektion 2 Uppgifter:

Läs mer

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:

Läs mer

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011) Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation

Läs mer

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing Föreläsning 15 (16) Introduktion till Swing Historik (java.awt) JDK 1.0 AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del nackdelar: Använder s.k. native code Stödjer endast komponenter

Läs mer

Frames och applets - en jämförelse

Frames och applets - en jämförelse 4 Applets Frames och applets - en jämförelse Din första applet Färger, texter och figurer Skapa egna klasser och objekt Bilder och ljud Parametrar i html-koden Kap 4: Sid 2 Frames och applets - en jämförelse

Läs mer

Laboration 15 Grafiskt användargränssnitt

Laboration 15 Grafiskt användargränssnitt Laboration 15 Grafiskt användargränssnitt Avsikten med denna laboration är att du ska träna på att skriva program som använder grafiskt användargränssnitt, dvs program som använder grafiska komponenter

Läs mer

2D1339 Programkonstruktion för F1, ht 2004

2D1339 Programkonstruktion för F1, ht 2004 2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

ID1004 Laboration 3, 5-6 November 2012

ID1004 Laboration 3, 5-6 November 2012 18-okt-2012/FK ID1004 Laboration 3, 5-6 November 2012 Labben bör göras individuellt. Beräknad tid ca 2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration Gui Avsikten med denna laboration är att du ska träna på att bygga grafiska användargränssnitt. Spara dina resultat i paketet laborationgui. Längst bak i laborationen finns fullständiga lösningar

Läs mer

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna MER Java Foundation Classes (JFC) Swing Swing Många klasser Vettigt att lära sig dem utantill - Tror inte det -... men det kan vara bra att ha en liten överblick över vad som finns - Idag (och med fortsättning

Läs mer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Grafiskt användargränssnitt, Swing Layout och komponenter Göra

Läs mer

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna MER Java Foundation Classes (JFC) Swing Swing Många klasser" Vettigt att lära sig dem utantill" - Tror inte det" -... men det kan vara bra att ha en liten överblick över vad som finns" - Idag (och med

Läs mer

Lite logik. Kap 6: Sid 2

Lite logik. Kap 6: Sid 2 6 Loopar och val Lite logik Val mellan två alternativ Val mellan flera alternativ Sammansatta villkor Boolska variabler Jämför strängar While-loopar Do-loopar For-loopar Kortformer Kap 6: Sid 2 Lite logik

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30

Läs mer

Föreläsning 11. Att rita egna bilder.

Föreläsning 11. Att rita egna bilder. Föreläsning 11 Att rita egna bilder. Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent. I ett program

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

Föreläsning 11. Att rita egna bilder. Grafik. Klassen Graphics. Fönstrets koordinatsystem

Föreläsning 11. Att rita egna bilder. Grafik. Klassen Graphics. Fönstrets koordinatsystem Grafik Föreläsning 11 Att rita egna bilder. Fönstrets koordinatsystem Föreläsn Att rita eg Koordinatsystemet som används i Java har en horisontell x-axel och en vertikal y-axel, med origo (0,0) i övre

Läs mer

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt (2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september

Läs mer

Laboration 4: Game of Life

Laboration 4: Game of Life Laboration 4: Game of Life Programmerade system I1 Bakgrund: I denna laboration ska vi ägna oss åt Game of Life, vilket är en mycket enkel modell av en population organismer som kan leva, dö och fortplanta

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser? Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:

Läs mer

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt

Läs mer

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar 0 Java och Swing LiTHehack? Här? @ kontakt /. lithehack se. lithehack se koma -, 17 19 Tisdagar och torsdagar Idag grafik menyer kortkomandon pop up-menyer submenyer Skansholm Java direkt upplaga 6 eller

Läs mer

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion 1 DSV Peter Mozelius Verktyget Javadoc De flesta program behöver dokumentation I Java finns ett verktyg som genererar HTML- dokumentation på ett enkelt

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering 1 DSV Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren I Java finns

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Lektion Händelsehanterare

Lektion Händelsehanterare Lektion Händelsehanterare Händelsehanterare kallas även lyssnare. En lyssnare har som uppgift att ta hand om olika händelser som kan inträffa. För att lyssnaren skall reagera på händelser måste den registreras

Läs mer

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter De komponenter som vi ska titta lite närmare på den här gången är paneler (JPanel), knappar (JButton), textfält (JTextField).

Läs mer

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Institutionen för Datavetenskap JSk TENTAMEN TDA540 TENTAMEN I OBJEKTORIENTERAD PROGRAMMERING för Z1 TID 14.15-18.15 Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt 60 poäng. På

Läs mer

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se 1 F18-20-2006 Denna vecka Måndag: Ett komplext problem Tisdag: Lektion. Kväll: Essäfrågan distribueras via webben. Dead-line onsdag 17 maj, kl 12.00. Inlämning elektroniskt och på papper. Onsdag: Grafik

Läs mer

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras

Läs mer

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius ITK:P1 Att implementera en spelidé i Java DSV Peter Mozelius import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Lektion4 extends JFrame implements ActionListener { final int

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 18 Igår: Genomgång av dugga Rekursion Idag och på måndag: Om essän Lite, lite teori om konstanter Grafiska användargränssnitt Grundläggande

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016 Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015 Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015 Kursnämnd Namn kommer... UML: Klassdiagram UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Algoritmanalys, Ordo Sortering, Insertionsort

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Kontrollskrivning 1 Onsdag 19/11 2003 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 13 Avsikten med denna laboration är att du ska använda ett par nya grafiska komponenter. Dessutom ska du göra designen utan hjälp av en layout-manager (enklare). Börja med att skapa paketet

Läs mer

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java Föreläsning 7 Innehåll Grafiska användargränsnitt i Java Grafiska användargränsnitt i Java Komponenter (fönster, knappar, ) Layout Händelsehantering (Hur man får någonting att hända när användaren t.ex.

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

Föreläsning 13: Swing (GUI), händelser, timer

Föreläsning 13: Swing (GUI), händelser, timer TDA 545: Objektorienterad programmering Föreläsning 13: Swing (GUI), händelser, timer GUI = graphical user interface Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafiska gränssnitt; läs kap

Läs mer

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers Föreläsning 10 Mer om grafiska komponenter Händelsestyrda program Layout Managers Utplaceringen av komponenter i en behållare styrs med en layout manager. Det finns olika layout managers: FlowLayout GridLayout

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 12 Avsikten med denna laboration är att du ska göra några grafiska program. Börja med att skapa paketet laboration 12. Grundläggande uppgift Uppgift 12a Uppgiften går ut på att göra en enkel

Läs mer

Lösningsförslag övning 2.

Lösningsförslag övning 2. Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static

Läs mer

Inlämningsuppgift 1 Programmeringsteknik MN1 vt02

Inlämningsuppgift 1 Programmeringsteknik MN1 vt02 Inlämningsuppgift 1 Programmeringsteknik MN1 vt02 Denna uppgift skall lösas individuellt och redovisas muntligt vid dator för läraren senast 2002-02-10. 1 Introduktionslaboration Uppgiftens syfte är att

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare GUI - Graphical User Interface OOP F16:2 Man skapar en yta (ett fönster)

Läs mer

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout Layout Managers Föreläsning 10 Mer om grafiska komponenter Händelsestyrda program Föreläsn Utplaceringen av komponenter i en behållare styrs med en layout manager. Det finns olika layout managers: FlowLayout

Läs mer

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 ) (26 januari 2018 F3 1 ) Dagens föreläsning Arrayer och klasser Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 2 ) Arrayer En array är en datatyp

Läs mer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

DD1342 Programkonstruktion för F1, ht 2007

DD1342 Programkonstruktion för F1, ht 2007 DD1342 Programkonstruktion för F1, ht 2007 Lappskrivning 1 Torsdag 22/11 2007 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar markerats räknas det som fel svar. Alla skriftliga

Läs mer

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik 2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Tentamen i Objektorienterad programmering E

Tentamen i Objektorienterad programmering E CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA546 Tentamen i Objektorienterad programmering E Måndagen 8 mars 2010, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 1040. Inga hjälpmedel. Lösningar till

Läs mer

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den. Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 40 p) Lärare, jourhavande lärare

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 19 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Konstruktion av egna grafiska komponenter Kontsruktion av egen komponent Att rita upp

Läs mer

Lösningar för tenta 3 DAT043,

Lösningar för tenta 3 DAT043, Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn,

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare GUI - Graphical User Interface OOP F16:2 Man skapar en yta (ett fönster)

Läs mer

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14. Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets 1 Läsanvisningar Den här föreläsningen syftar till att ge en bild av vad en Java-Applet är och är ganska fristående från föregående

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa

Läs mer

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a // Lösningar till gammal tentamen // Uppgift 1 a /* Felet beror på att det är klassen på referensen som avgör vilka metoder man får köra på ett objekt, inte klassen på objektet. På rad 5 i klassen C har

Läs mer

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Java-concept och Swing. Swing low, sweet chariot

Java-concept och Swing. Swing low, sweet chariot Java-concept och Swing Swing low, sweet chariot Javas Swing-API En del av Javas standard-api API - application programming interface Ett klassbibiliotek som följer med Java Är designat med många OO-concept

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetition: Arv En subklass ärver alla variabler och metoder från sin superklass.

Läs mer