För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen.

Storlek: px
Starta visningen från sidan:

Download "För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen."

Transkript

1 Java utan netbeans Du har gjort ett program i netbeans Hur exportera det så att andra kan köra det utan att använda netbeans? Välj projektet som main project Högerklicka på det och välj Clean and Build Därmed skapas en jar fil: en fil som innehåller kompilerad Java För att hitta filen gå till mappen NetBeansProjects Välj undermappen med rätt projekt, och sedan undermapp dist Där ligger jar-filen Om Java är rätt installerat (netbeans behövs inte) räcker det att dubbelklicka på jar filen för att köra programmet

2 Javas namnkonvention camelcase : ord skrivs ihop och varje ord börjar på stor bokstav Namn på klasser och interface skrivs i CamelCase och börjar på stor bokstav Konstanter skrivs i UPPERCASE, ord skiljs av underscore Allt annat skrivs i camelcase och börjar på liten bokstav

3 Exempel class Clock { class MyClock { int angle void computeangle(int newtime final static int CLOCK_WIDTH = 300;

4 Magiska siffror Sifferkonstanter som 200, 314, får endast förekomma i konstantdeklarationer gdrawline(150, 150, 180, 180)

5 Magiska siffror Sifferkonstanter som 200, 314, får endast förekomma i konstantdeklarationer gdrawline(150, 150, 180, 180) final int CENTER_X = 150; final int CENTER_Y = 150; final int LINE_SIZE = 30; gdrawline(center_x, CENTER_Y, CENTER_X+LINE_SIZE, CENTER_Y+LINE_SIZE)

6 Omfaktorisering void paintcomponent (Graphics g) {

7 Omfaktorisering void paintcomponent (Graphics g) {

8 Omfaktorisering void paintcomponent (Graphics g) {

9 Omfaktorisering void paintcomponent (Graphics g) { painthands(g); paintface(g); paintnumerals(g); void painthands(graphics g) { void paintface (Graphics g) { void paintnumerals (Graphics g) {

10 Krav på kod Vettiga namn som följer namnkonventionen Inga magiska nummer Uppdelning i små metoder Objektorientering: metoderna ligger i lämpliga klasser

11 Javaprojekten 3 stycken projekt Grupper om 2 studenter Olika för alla 3 projekten Fredagarnas labtillfällen obligatoriska Innan redovisning ska koden inspekteras Reservdag innan jul

12 Kodinspektionsprotokoll Ifyllt protokoll måste uppvisas vid redovisning av projektuppgift Ifylles av grupp som skrivit koden Uppgift: Grupp: Ifylles av inspekterande grupp Klarmarkera med kryss i rutorna Identitet: Programmet har en inledande kommentar som anger vilka som löst vilken uppgift och när Typografi: Konsekventa indragningar och radbyten för att öka läsbarheten Namnval: Informativa namn som följer javas camelcasetradition Objektorientering: Minimal användning av static Funktionsuppdelning: Metoderna är inte för långa och varje metod gör bara en sak Lokalitet: Variabler deklarerade så lokalt som möjligt Inga magiska nummer: Konstanter är deklarerade med informativa namn Inspekterande grupp: Datum

13 Layout Hur lägger java in element i en panel? Svar: Det beror på vilken layout manager som används Det finns fler typer av layout managers än ni någonsin kommer att behöva Vi behandlar bara några stycken Se Horstmann kap 11 Mer finns på javase/tutorial/uiswing/layout/indexhtml

14 Grundidé Layout managers är objekt Man kan skapa dem genom att instansiera motsvarande klass En layout manager kan bindas till en JPanel med JPanelens metod setlayout() Därefter kontrollerar managern automatiskt allt som läggs in med panelens add() metod

15 Exempel: border layout North West Center East South

16 Idiom 1 JPanel mypanel = new JPanel(); En JPanel skapas och får en border layout mypanelsetlayout(new BorderLayout()); somelabel läggs i norra fältet mypaneladd(somelabel, BorderLayoutNORTH)

17 Idiom 2 class MyPanel extends JPanel { MyPanel() { setlayout (new BorderLayout()); MyPanel är en egen slags JPanel, och får en BorderLayout i konstruktorn somelabel läggs i norra fältet add(somelabel, BorderLayoutNORTH)

18 Grid layout Panelen delas in i ett rutnät add() lägger in med början på övre vänstra hörnet, och fyller i åt höger När raden är slut börjar man på nästa

19 JPanel mypanel = new JPanel(); mypanelsetlayout(new GridLayout(3,4)); mypaneladd(label1); mypaneladd(label2); mypaneladd(label12);

20 Interaktiv grafik: Knappar En knapp är något man kan klicka på med musen En knapp ligger i en JPanel Hur skapas en knapp? Vad händer när man klickar på den?

21 Skapa en knapp Knapptyper = klasser Knappar = objekt Finns ett antal olika klasser Den enklaste är JButton Konstruktorn tar en parameter: en textsträng som ska stå på knappen Finns metoder för att ändra färg etc

22 Exempel buttondemo

23 En panel där det ritas class DrawPanel extends JPanel { upp en stor cirkel DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gdrawoval(100,100,300,300);

24 JFrame theframe = new JFrame("Demo"); theframesetdefaultcloseoperation(jframeexit_on_close); JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); theframepack(); theframesetvisible(true);

25 JFrame theframe = new JFrame("Demo"); theframesetdefaultcloseoperation(jframeexit_on_close); JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); theframepack(); theframesetvisible(true);

26 JFrame theframe = new JFrame("Demo"); theframesetdefaultcloseoperation(jframeexit_on_close); JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); theframepack(); theframesetvisible(true);

27 JFrame theframe = new JFrame("Demo"); theframesetdefaultcloseoperation(jframeexit_on_close); JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); theframepack(); theframesetvisible(true);

28 JFrame theframe = new JFrame("Demo"); theframesetdefaultcloseoperation(jframeexit_on_close); JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); theframepack(); theframesetvisible(true);

29 JFrame theframe = new JFrame("Demo"); theframesetdefaultcloseoperation(jframeexit_on_close); JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); theframepack(); theframesetvisible(true);

30 Vad händer när man klickar på en knapp? Det genereras ett så kallat event (händelse) Finns många slags typer av event: knapptryckningar, musrörelser, tangentbordstryckningar, timersignaler Du gissade det: en eventtyp är en klass Ett event är ett objekt Eventobjekt genereras automatiskt vid motsvarande händelse Du behöver alltså inte instansiera events själv

31 Event source Varje event har en source: den (grafiska) komponent som gav upphov till eventet Ex: klickning på en knapp ger ett event med knappen som source Ex: musrörelse i en JPanel ger ett event med JPanel-en som source Ex: en tangentbordstryckning ger ett event med source = det aktiva grafiska objektet (oftast det där du klickat senast) Ex: en timersignal har motsvarande timer som source

32 Event listener En event listener är ett objekt som ligger och väntar på event av rätt typ och från en viss source När ett sådant event inträffar går rätt metod i lyssnaren igång automatiskt Du får själv programmera den metoden så att den gör vad du tänkt 1) skapa lyssnare, 2) bind till source OBS Events kommer automatiskt Lyssnarklasser programmerar du själv

33 Events and Listeners Event Component Listener!"#$%&$'(')"$*+(#)" %,-"('(/,)(",'"(0(')"!"#$//(1&$'23'"431)('(/" $*+(#)"31"2(13'(2")$" /(1&$'2")$")5("(0(')" 65('")5("(0(')"$##7/18")5("#$%&$'(')"#,441" )5(",&&/$&/3,)("%()5$2"$9")5("431)('(/8" &,113'",'"$*+(#)")5,)"2(1#/3*(1")5("(0(')" 4-51

34 Lyssnarklasser Det finns olika slags lyssnarklasser för olika slags event Ex: MouseListener (tex musklick i en JPanel) KeyListener (tex tangenttryckningar) ActionListener (tex Timer eller klick på en JButton)

35 Göra en lyssnarklass 1 Deklarera rätt lyssnartyp i klasshuvudet med ordet implements class MyListener implements KeyListener { 2 Se till att definiera de metoder som just den lyssnartypen måste ha Tex en KeyListener måste ha keytyped() keypressed() keyreleased() Varje sådan metod har exakt en parameter av rätt typ Tex för KeyListener är det typen KeyEvent Metoden ska vara public void

36 Använda Lyssnarklass Instansiera ett objekt av lyssnarklassen för att få ett lyssnarobjekt Bind det till det objekt som ska avlyssnas genom en addlistener - metod Tex för KeyListener är metoden addkeylistener()

37 Idiom 1 import javaawt*; import javaxswing*; import javaawtevent*; class MyListener implements KeyListener { public void keytyped(keyevent e) { Skriv här det som ska hända vid tangenttryckning public void keypressed(keyevent e) { public void keyreleased(keyevent e) { mypanel = new JPanel(); mylistener = new MyListener(); mypaneladdkeylistener(mylistener);

38 Idiom 2 En klass blir sin egen lyssnare Enklast för små exempel class MyPanel extends JPanel implements KeyListener { MyPanel() { addkeylistener(this); Bind sig själv som lyssnare i konstruktorn! public void keytyped(keyevent e) { Skriv här det som ska hända vid tangenttryckning Definiera lyssnarmetoderna i samma klass public void keypressed(keyevent e) { public void keypressed(keyevent e) {

39 Idiom 1 Event Component Listener!"#$%&$'(')"$*+(#)" %,-"('(/,)(",'"(0(')"!"#$%%&'($)*+),"-+'&)&%" $/0&#"+'"*&'+,)&*"$" %&'($)*"$"1&"&2&)" Idiom 2 Event Component and also Listener This component may generate events, and can itself respond to the events

40 JPanel buttonpanel = new JPanel(); buttonpanelsetlayout(new GridLayout(2,3)); DrawPanel drawpanel = new DrawPanel(); for (int i=1; i<=6; i++) { JButton button = new JButton(i+""); buttonpaneladd(button); buttonaddactionlistener(drawpanel); Container pane = theframegetcontentpane(); panesetlayout(new BorderLayout()); paneadd(drawpanel, BorderLayoutCENTER); paneadd(buttonpanel, BorderLayoutNORTH); buttondemo2

41 class DrawPanel extends JPanel implements ActionListener { boolean fillit = false; DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); if (fillit) { gfilloval(100, 100, 300, 300); else { gdrawoval(100, 100, 300, 300); public void actionperformed(actionevent e) { fillit =! fillit; repaint();

42 class DrawPanel extends JPanel implements ActionListener { boolean fillit = false; DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); if (fillit) { gfilloval(100, 100, 300, 300); else { gdrawoval(100, 100, 300, 300); public void actionperformed(actionevent e) { fillit =! fillit; repaint();

43 class DrawPanel extends JPanel implements ActionListener { boolean fillit = false; DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); if (fillit) { gfilloval(100, 100, 300, 300); else { gdrawoval(100, 100, 300, 300); public void actionperformed(actionevent e) { fillit =! fillit; repaint();

44 Men om vi vill att olika knappar ska få olika effekt?

45 Lösning 1: olika Listeners för olika knappar Onödigt krångligt om knapparna gör likartade saker

46 Lösning 2: samma Listener som tar reda på händelsorsak buttondemo4

47 class DrawPanel extends JPanel implements ActionListener { String filler = ""; DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(100, 100, 300, 300); gdrawstring(filler, 250,250); public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint();

48 class DrawPanel extends JPanel implements ActionListener { String filler = ""; Text att skrivas ut DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(100, 100, 300, 300); gdrawstring(filler, 250,250); public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint();

49 class DrawPanel extends JPanel implements ActionListener { String filler = ""; Text att skrivas ut DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(100, 100, 300, 300); gdrawstring(filler, 250,250); Här skrivs den ut public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint();

50 class DrawPanel extends JPanel implements ActionListener { String filler = ""; Text att skrivas ut DrawPanel() { setpreferredsize(new Dimension(500, 500)); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(100, 100, 300, 300); gdrawstring(filler, 250,250); Här skrivs den ut public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint(); Här får den nytt värde: knapptexten

51 public void actionperformed(actionevent e) { ((JButton)(egetSource()))getText();

52 public void actionperformed(actionevent e) { ((JButton)(egetSource()))getText(); e är av typ ActionEvent En sådan har en metod getsource() som returnerar det objekt som är orsak till händelsen egetsource()

53 public void actionperformed(actionevent e) { ((JButton)(egetSource()))getText(); e är av typ ActionEvent En sådan har en metod getsource() som returnerar det objekt som är orsak till händelsen Resultatet blir ett objekt Vi råkar veta att det alltid är en JButton Så vi kan casta det, dvs ange typinformation egetsource() (JButton)(egetSource())

54 public void actionperformed(actionevent e) { ((JButton)(egetSource()))getText(); e är av typ ActionEvent En sådan har en metod getsource() som returnerar det objekt som är orsak till händelsen Resultatet blir ett objekt Vi råkar veta att det alltid är en JButton Så vi kan casta det, dvs ange typinformation egetsource() (JButton)(egetSource()) En JButton har en metod gettext() som returnerar knappens text ((JButton)(egetSource()))getText();

55 Information i events Lyssnarens metod får alltid en parameter av typ Event Denna kan användas för att få information om eventet Exakt vilken information som finns beror på eventtypen Tex: alla event har en metod getsource() Musevents har metoder getx() och gety() som ger muskoordinaterna

56 Sanningen bakom ordet implements 1 Det underlättar överenskommelser mellan olika programmerare, och gör att java kan se till att de inte bryts!

57 Exempel Jag är systemprogrammerare Jag skriver metoden addactionlistener() i javabiblioteket Metoden tar en parameter: ett lyssnarobjekt Det addactionlistener() gör är att se till att ActionEvents triggar anrop till parameterns metod actionperformed() Så det kräver att parametern faktiskt har en sådan metod! Annars är jag kokt

58 Du gör en tillämpning och vill använda min fina addactionlistener() Du importerar biblioteket där den ligger och anropar den med ett hemsnickrat objekt som parameter Detta objekt har förhoppningsvis en metod actionperformed() Annars är vi kokta

59 Interface Ett sätt för mig att säga: det objekt som är parameter till min fina metod måste faktiskt ha en metod actionperformed() Ett sätt för dig att säga: Den klass jag nu skriver kommer garanterat att innehålla metoden actionperformed() Interface är ett sätt att formulera sådana garantier och kolla att de uppfylls

60 Ett interface innehåller metodhuvuden, dvs namn, typ och parametertyp(er) för metoden Det innehåller inga metodkroppar Ex: interface ActionListener { public void actionperformed(actionevent e);

61 interface ActionListener { public void actionperformed(actionevent e); public void addactionlistener(actionlistener actlist) { (koden för addactionlistener) Min kod Din kod class MyApplication implements ActionListener { public void actionperformed(actionevent e) { addactionlistener(new MyApplication())

62 interface ActionListener { public void actionperformed(actionevent e); Definierar vad det innebär att vara en ActionListener public void addactionlistener(actionlistener actlist) { (koden för addactionlistener) Min kod Din kod class MyApplication implements ActionListener { public void actionperformed(actionevent e) { addactionlistener(new MyApplication())

63 interface ActionListener { public void actionperformed(actionevent e); Definierar vad det innebär att vara en ActionListener public void addactionlistener(actionlistener actlist) { (koden för addactionlistener) Kräver att parametern är en ActionListener Min kod Din kod class MyApplication implements ActionListener { public void actionperformed(actionevent e) { addactionlistener(new MyApplication())

64 interface ActionListener { public void actionperformed(actionevent e); Definierar vad det innebär att vara en ActionListener public void addactionlistener(actionlistener actlist) { (koden för addactionlistener) Kräver att parametern är en ActionListener Min kod Din kod class MyApplication implements ActionListener { public void actionperformed(actionevent e) { Gör en utfästelse att klassens objekt ska bli ActionListeners addactionlistener(new MyApplication())

65 interface ActionListener { public void actionperformed(actionevent e); Definierar vad det innebär att vara en ActionListener public void addactionlistener(actionlistener actlist) { (koden för addactionlistener) Kräver att parametern är en ActionListener Min kod Din kod class MyApplication implements ActionListener { public void actionperformed(actionevent e) { Gör en utfästelse att klassens objekt ska bli ActionListeners uppfyller utfästelsen addactionlistener(new MyApplication())

66 Sanningen bakom ordet implements 2 Det möjliggör så kallad polymorfi: en metod kan ta parametrar av flera olika klasser

67 Exempel: bubblesort Vi har skrivit en metod bubblesort() som sorterar en array av heltal: void bubblesort(int[] data) {

68 Exempel: bubblesort Vi har skrivit en metod bubblesort() som sorterar en array av heltal: void bubblesort(int[] data) { Men samma metod skulle i princip kunna användas för att sortera - en array av float - en ArrayList av alla slags tal

69 Exempel: bubblesort Vi har skrivit en metod bubblesort() som sorterar en array av heltal: void bubblesort(int[] data) { Men samma metod skulle i princip kunna användas för att sortera - en array av float - en ArrayList av alla slags tal Måste jag skriva en ny bubblesort för varje sådant fall?

70 Nej! bubblesort() tar en parameter, data Vad är det jag ovillkorligen måste veta om den parametern? Jo, - jag måste kunna jämföra två intilligande tal - jag måste kunna byta plats på två intilliggande tal - jag måste kunna få reda på längden På alla datastrukturer som uppfyller detta kan jag göra bubblesort!

71 Formulera kravet Kravet formuleras som ett interface Det ska alltså vara tre metoder, en för jämförelse mellan position i och i+1, en för platsbyte mellan position i och i+1, och en för längden interface Bubblesortable { public boolean compare(int i); public void swap (int i); public int length();

72 Använd kravet när du gör bubblesort boolean bytintill(bubblesortable data) { boolean bytt = false; for (int i = 0; i < datalength() - 1; i++) { if (!datacompare(i)) { dataswap(i); bytt = true; return bytt; void bubblesort(bubblesortable data) { while (bytintill(data)) { interface Bubblesortable { public boolean compare(int i); public void swap (int i); public int length();

73 Uppfyll kravet för att använda bubblesort class MyStructure implements Bubblesortable { int[] data; public boolean compare(int i) { return data[i] < data[i + 1]; public void swap(int i) { int temp = data[i]; data[i] = data[i + 1]; data[i + 1] = temp; public int length() { return datalength; interface Bubblesortable { public boolean compare(int i); public void swap (int i); public int length();

74 Eller såhär class MyStructure2 implements Bubblesortable { ArrayList<Integer> data; public boolean compare(int i) { return dataget(i) < dataget(i + 1); public void swap(int i) { int temp = dataget(i); dataset(i, dataget(i + 1)); dataset(i + 1, temp); public int length() { return datasize(); interface Bubblesortable { public boolean compare(int i); public void swap (int i); public int length();

75 Fördel: Du definierar bubblesort en enda gång Du kan använda den på många olika klasser, nämligen på alla som implementerar interfacet Bubblesortable

76 OBS Användning av interface göra att java kollar att rätt metoder är definierade och har rätt typ av parametrar java kollar inte att metoderna faktiskt gör det som är tänkt!

77 Muslyssnare Tråkigt nog finns två olika lyssnartyper för mushändelser: MouseListener - lyssnar på musknappar och muspekarens närvaro i ett objekt MouseMotionListener - lyssnar på musrörelser

78 MouseListener public void mouseclicked(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mousepressed(mouseevent e) public void mousereleased(mouseevent e)

79 MouseMotionListener public void mousedragged(mouseevent e) public void mousemoved(mouseevent e)

80 ur dokumentationen för MouseMotionListener

81 Exempel Gör så att man kan ändra cirkelns storlek med musen buttondemo5

82 class DrawPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener { String filler = ""; int radius = 100; DrawPanel() { setpreferredsize(new Dimension(500, 500)); addmouselistener(this); addmousemotionlistener(this); public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(250-radius, 250-radius, 2*radius, 2*radius); gdrawstring(filler, 250,250);

83 class DrawPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener { String filler = ""; int radius = 100; DrawPanel() { setpreferredsize(new Dimension(500, 500)); addmouselistener(this); addmousemotionlistener(this); Objekten lyssnar av sina egna mushändelser public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(250-radius, 250-radius, 2*radius, 2*radius); gdrawstring(filler, 250,250);

84 class DrawPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener { String filler = ""; int radius = 100; DrawPanel() { setpreferredsize(new Dimension(500, 500)); addmouselistener(this); addmousemotionlistener(this); Objekten lyssnar av sina egna mushändelser Ny instansvariabel för cirkelns storlek public void paintcomponent(graphics g) { gsetcolor(colorwhite); gfillrect(0,0,500,500); gsetcolor(colorblack); gdrawoval(250-radius, 250-radius, 2*radius, 2*radius); gdrawstring(filler, 250,250);

85 public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint(); public void mousepressed(mouseevent e) { setradius(e); public void mousedragged(mouseevent e) { setradius(e); public void mouseentered(mouseevent e) {; public void mouseexited(mouseevent e) {; public void mouseclicked(mouseevent e) {; public void mousereleased(mouseevent e) {; public void mousemoved(mouseevent e) {; void setradius(mouseevent e) { int xdist = egetx()-250; int ydist = egety()-250; radius = (int)mathsqrt(xdist*xdist + ydist*ydist); repaint();

86 public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint(); public void mousepressed(mouseevent e) { setradius(e); public void mousedragged(mouseevent e) { setradius(e); public void mouseentered(mouseevent e) {; public void mouseexited(mouseevent e) {; public void mouseclicked(mouseevent e) {; public void mousereleased(mouseevent e) {; public void mousemoved(mouseevent e) {; Mushändelser som reageras på void setradius(mouseevent e) { int xdist = egetx()-250; int ydist = egety()-250; radius = (int)mathsqrt(xdist*xdist + ydist*ydist); repaint();

87 public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint(); public void mousepressed(mouseevent e) { setradius(e); public void mousedragged(mouseevent e) { setradius(e); public void mouseentered(mouseevent e) {; public void mouseexited(mouseevent e) {; public void mouseclicked(mouseevent e) {; public void mousereleased(mouseevent e) {; public void mousemoved(mouseevent e) {; Mushändelser som reageras på Mushändelser som vi struntar i void setradius(mouseevent e) { int xdist = egetx()-250; int ydist = egety()-250; radius = (int)mathsqrt(xdist*xdist + ydist*ydist); repaint();

88 public void actionperformed(actionevent e) { filler = ((JButton)(egetSource()))getText(); repaint(); public void mousepressed(mouseevent e) { setradius(e); public void mousedragged(mouseevent e) { setradius(e); public void mouseentered(mouseevent e) {; public void mouseexited(mouseevent e) {; public void mouseclicked(mouseevent e) {; public void mousereleased(mouseevent e) {; public void mousemoved(mouseevent e) {; Mushändelser som reageras på Mushändelser som vi struntar i void setradius(mouseevent e) { int xdist = egetx()-250; int ydist = egety()-250; radius = (int)mathsqrt(xdist*xdist + ydist*ydist); repaint(); Omberäkning av radien

89 Nästa föreläsning: Bra om alla kommer i tid

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

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

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

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

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

Monday, November 16, Senaste Labben

Monday, November 16, Senaste Labben Senaste Labben Senaste Labben Strålande resultat (mv 4.6)! Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? God kodhygien?

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

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

Exempel på spelprogrammering i java.

Exempel på spelprogrammering i java. Exempel på spelprogrammering i java http://www.brackeen.com/javagamebook/ Chatten? Overloading Vi kan ha flera olika metoder med samma namn Dessa måste i så fall skiljas genom olika signaturer: parametrarnas

Läs mer

Händelsestyrda program

Händelsestyrda program JavaD- 1 Program- eller händelsestyrd exekvering Händelsestyrda program JavaD- 2 Programstyrd exekvering I ett traditionellt program bestämmer programmet när det är dags att läsa indata, programmets exekvering

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

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

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

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

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

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material. TDA 545: Objektorienterad programmering Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material. Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag En quiz! tinyurl.com/tda545quiz

Läs mer

Erfarenheter från biljardprojektet. måndag 23 november 15

Erfarenheter från biljardprojektet. måndag 23 november 15 Erfarenheter från biljardprojektet Gästföreläsningen Synpunkter? Sanningen bakom ordet implements Det underlättar överenskommelser mellan olika programmerare, och gör att java kan se till att de inte bryts!

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

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

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

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

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,

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

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

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

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

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

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface) TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface) Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Terminologi Vad är en klass?

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

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

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

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

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

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Fredagen 13 januari 2012, 14.00 18.00. Jourhavande lärare: Björn von Sydow, tel 0722/391401. Inga hjälpmedel. Lösningar

Läs mer

Projekt 2 XL. Observer-mönstret

Projekt 2 XL. Observer-mönstret Projekt 2 XL Objektorienterad modellering och diskreta strukturer Inför nästa projekt Lennart Andersson Reviderad 2011 10 24 2011 OMD 2011 F15-1 Schema designmöten OMD 2011 F15-2 Observer-mönstret 2 och

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

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

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

Programstyrd / händelsestyrd

Programstyrd / händelsestyrd Programstyrd / händelsestyrd Jevent - 1 Händelsestyrda program Jevent - 2 Programstyrd exekvering I ett traditionellt program bestämmer programmet när det är dags att läsa indata, programmets exekvering

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

Labbinstruktioner för Java/Swing

Labbinstruktioner för Java/Swing Labbinstruktioner för Java/Swing Grafik- och interaktionsprogrammering 2008 Martin Berglund Allmänt Dessa instruktioner är på intet sett den enda möjliga lösningen på labben, tvärtom finns

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

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

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 VT13 PROG2 Tenta 2013-06-07 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

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

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

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Tentamen FYTA11 Javaprogrammering Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

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

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (7) PROG2 PROG2 Tenta 2014-01-17 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

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

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

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 110317 a) Sant. b) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser. c) Falskt. TCP är ett protokoll på transportlagret. d) Falskt. Binärsökning

Läs mer

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets GUI (forts) Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets Sven-Olof Nyström Uppsala Universitet 18 mars 2005 Skansholm: Kapitel 6 Användaren kan kommunicera med programmet

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

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

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

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modellsvar för Tentamen för Objektorienterad programvaruutveckling,

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

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

MVC-mönstret. model-view-control i Swing

MVC-mönstret. model-view-control i Swing MVC-mönstret model-view-control i Swing MVC Tanken bakom MVC (model view control) är att separera uppgifter i ett program från varandra. Model - Den data som behandlas View - Hur användargränssnittet ser

Läs mer

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs Tentamen 2006-0823 Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs Uppsala Universitet Instutitionen för informationsteknologi Avdelningen för datalogi Kursansvarig: Sven-Olof

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

Fönsterhantering, grafik

Fönsterhantering, grafik Spel: exempel Ex. skattjakt Fönsterhantering, grafik (del 2) Plan (16x16 rutor) Valt array som datastruktur En spelare En fiende Vet spelarens position Bör egentligen inte veta! Programmering tillämpningar

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

Lösningsförslag tentamen FYTA11 Java

Lösningsförslag tentamen FYTA11 Java Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

Läs mer

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

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

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

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

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation.

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation. SMD091 Lektion 9 Inkapsling Lite repetition Grafik 1 2 Gränssnitt Definition och Implementation Sammansättning... Definition...är ofta det bästa sättet att använda funktionalitet i andra klasser. Ratt

Läs mer

Omentamen FYTA11 Javaprogrammering

Omentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Omentamen FYTA11 Javaprogrammering Onsdag 4:e februari 2009, 13:00 17:00 Instruktioner Inga hjälpmedel är tillåtna. Behandla högst en uppgift

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

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

070602 kl 10.15-15.15

070602 kl 10.15-15.15 Malmö högskola 1 Tentamen på kursen DA7800, Programmering med Java del II 070602 kl 10.15-15.15 Tillåtna hjälpmedel: En valfri Javabok Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de

Läs mer

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,

Läs mer

Arv och Grafiska Användargränssnitt

Arv och Grafiska Användargränssnitt Arv och Grafiska Användargränssnitt Bildserie 5 Plattform Java är inte bara ett språk utan en s.k. plattform - Förutom språket finns en otrolig mängd färdiga klasser samlade i bibliotek (kallas också API:n,

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

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modellsvar för Tentamen för Objektorienterad programvaruutveckling,

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

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

Laboration 24 Databasen MySQL och java

Laboration 24 Databasen MySQL och java Laboration 24 Databasen MySQL och java Avsikten med denna laboration är att du ska hämta information ur en eller flera tabeller och visa resultatet i en JTable-komponent. Du ska ändra innehållet i tabellen

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

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: Objektorienterad analys, Objektorienterad design Grafiskt användargränssnitt,

Läs mer

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 11 Tentamen FYTA11 Javaprogrammering Måndag 9:e januari 2012, 10:15 14:15 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

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

DAT043 - föreläsning 8

DAT043 - föreläsning 8 DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser. (16 februari 2016 F5.1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (16 februari 2016 F5.2 ) Pokertärningar

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2017-10-23 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 a) Sant. b) Sant. c) Sant. Lösningsförslag till tentamen 170818 d) Falskt. IPv6 anger en IP-adress med 132 bitar. e) Falskt. Spoofing åsyftar användning av förfalskad eller lånad identitet på

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Läs mer