Repetitionsföreläsning 2: Quiz & problemlösning med swing

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Repetition av språket Java
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Objektorienterad utveckling
Klassarv och inkapsling
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Metoder i java Det finns två typer av metoder i java
Programmeringsteknik för K och Media
Programkodens uppbyggnad
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
i olika programmeringsspråk
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
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.
Objektorienterad Modellering Programmering och Analys
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
ITK:P1 Lektion 4 Att implementera en spelidé i Java DSV Peter Mozelius.
1 MSPEL Lektion 2 DSV Peter Mozelius Spel i Java applets.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
1. Ett problem/uppgift.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2I1073 Lektion 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOP del III– Vecka 10 Händelser Kontrollkomponenter (Components) Featuring: Applets.
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events.
Föreläsning 3: Booleans, if, switch
Föreläsning 6: Metoder och fält (arrays)
Föreläsning 15: Exceptions & lite swing, gränssnitt
Föreläsning 4: for, while, do-while
Föreläsning 11: Rekursion
Föreläsning 14: Grafik & mera händelsehantering
Föreläsning 13: Swing (GUI), händelser, timer
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Innehåll: Arrays Arraylists For loops For-each loops
Föreläsning 2: Typer, klasser, tilldelning
Föreläsning 9: Arv och UML
Föreläsning 5: Att använda klasser & objekt
Föreläsning 10: Abstrakta klasser, gränssnitt
Algoritmer och datastrukturer, förel. 1
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

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

Idag En quiz! tinyurl.com/tda545quiz … och kanske problemlösning: uppgifter som har swing och grafik. Uppgift: Skriv ett enkelt ritprogram. 1. Man bör kunna rita bollar, rektanglar, linjer, mm. 2. Man bör kunna välja färg med knappar. 3. Man bör kunna trycka på undo och redo knappar. … eller vill ni göra något annat? Nästa gång träffas vi på tentan! :-)

Idag har vi quiz! tinyurl.com/tda545quiz Gå till följande sida med din telefon eller laptop: tinyurl.com/tda545quiz

Är ni färdiga för tentan? bör vara samma Testning av quiz-tekniken… Är ni färdiga för tentan? A: ja, jag kan sitta tentan nu om det behövs B: nästan, en övningsdag till så är jag färdig C: om en vecka kanske D: jag kommer nog inte att vara färdig tinyurl.com/tda545quiz

Testning av quiz-tekniken… Vad vill ni göra idag? A: endast quiz B: mest quiz + lite problemlösning C: lite quiz + mycket problemlösning D: något annat

Varför klagar kompilatorn (javac)? Quiz fråga: Varför klagar kompilatorn (javac)?

Q1 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q1 { public static void main(String[] args) { for(i=0; i<0; i++) { System.out.println(i); } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Variabel i är inte deklarerad. Q1 Varför klagar kompilatorn (javac)? public class Q1 { public static void main(String[] args) { for(i=0; i<0; i++) { System.out.println(i); } Variabel i är inte deklarerad. A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q2 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q2 { int foo(int i) { return i+1; } public static void main(String[] args) { System.out.println(foo(args.length)); A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q2 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q2 { int foo(int i) { return i+1; } public static void main(String[] args) { System.out.println(foo(args.length)); foo är en instansmetod A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q3 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q3 { static int foo(int i) { return i+1; } private Q3(int k) { System.out.println(foo(foo(k))); A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q3 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q3 { static int foo(int i) { return i+1; } private Q3(int k) { System.out.println(foo(foo(k))); A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q5 Varför klagar kompilatorn (javac)? A: syntaxfel import java.awt.*; import javax.swing.*; public class Q5 { public Q(int k) { JFrame f = new JFrame(); f.add(new JButton("Hi")); Window w = f; w.setVisible(w.equals(f)); } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

borde vara Q5 (alternativt saknas returtyp) Varför klagar kompilatorn (javac)? import java.awt.*; import javax.swing.*; public class Q5 { public Q(int k) { JFrame f = new JFrame(); f.add(new JButton("Hi")); Window w = f; w.setVisible(w.equals(f)); } borde vara Q5 (alternativt saknas returtyp) A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q6 Varför klagar kompilatorn (javac)? A: syntaxfel import java.awt.*; import javax.swing.*; public class Q6 { public Q6(int k) { Window w = new JFrame(); w.add(new JButton("Hi")); JFrame f = w; f.setVisible(f.equals(w)); } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q6 Varför klagar kompilatorn (javac)? A: syntaxfel import java.awt.*; import javax.swing.*; public class Q6 { public Q6(int k) { Window w = new JFrame(); w.add(new JButton("Hi")); JFrame f = w; f.setVisible(f.equals(w)); } inkompatibel typ A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q7 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q7 { public static void main(String [] args) { System.out.println ("Hello world!" ); } } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q7 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q7 { public static void main(String [] args) { System.out.println ("Hello world!" ); } } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q8 Varför klagar kompilatorn (javac)? A: syntaxfel public class Q8 { static void main( String [] args) { System.out.println (" Hello world!"); }} A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

strängen tar inte slut på denna rad Q8 Varför klagar kompilatorn (javac)? public class Q8 { static void main( String [] args) { System.out.println (" Hello world!"); }} strängen tar inte slut på denna rad A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q9 Varför klagar kompilatorn (javac)? A: syntaxfel import java.awt.*; import javax.swing.*; public class Q9 extends JFrame, JPanel { public Q9(String str) { super(); this.add(this); setVisible(true); } public String toString(int i) { return this.toString(); } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

att ärva från flera klasser går ej i Java Q9 Varför klagar kompilatorn (javac)? import java.awt.*; import javax.swing.*; public class Q9 extends JFrame, JPanel { public Q9(String str) { super(); this.add(this); setVisible(true); } public String toString(int i) { return this.toString(); } att ärva från flera klasser går ej i Java A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Q10 Varför klagar kompilatorn (javac)? A: syntaxfel import java.awt.event.*; public class Q10 extends ActionListener { public int k = 1; public void actionPerformed(ActionEvent e) { k = k - 1; System.out.println(k); } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

ActionListener är ett gränssnitt (interface) Q10 Varför klagar kompilatorn (javac)? ActionListener är ett gränssnitt (interface) import java.awt.event.*; public class Q10 extends ActionListener { public int k = 1; public void actionPerformed(ActionEvent e) { k = k - 1; System.out.println(k); } A: syntaxfel C: någonting är inte definierat B: typfel D: kompilatorn klagar inte

Quiz fråga: Vad är mest sant?

R1 Vad är mest sant? Abstrakt klasser … A: … är samma som gränssnitt B: … kan innehålla en eller flera abstrakt metoder C: … måste innehålla en eller flera abstrakt metoder D: … får inte innehålla kod

R1 Vad är mest sant? Abstrakt klasser … A: … är samma som gränssnitt B: … kan innehålla en eller flera abstrakt metoder C: … måste innehålla en eller flera abstrakt metoder D: … får inte innehålla kod

R2 Vad är mest sant? Arv och gränssnitt: A: Man kan inte ärva och implementera gränssnitt på samma gång. B: Man kan inte implementera två olika gränssnitt i samma klassdefinition. C: Man kan inte ärva från två olika klasser i samma klassdefinition. D: En klassdefinition kan inte vara inuti en annan.

R2 Vad är mest sant? Arv och gränssnitt: A: Man kan inte ärva och implementera gränssnitt på samma gång. B: Man kan inte implementera två olika gränssnitt i samma klassdefinition. C: Man kan inte ärva från två olika klasser i samma klassdefinition. D: En klassdefinition kan inte vara inuti en annan.

R3 Vad är mest sant? Ritning av grafik A: … gör man med GUI komponenter, t.ex JButton B: … kan man inte göra i Java. C: … ritar man endast i JPanel. D: … kan man göra med överskuggning av paintComponent

R3 Vad är mest sant? Ritning av grafik A: … gör man med GUI komponenter, t.ex JButton B: … kan man inte göra i Java. C: … ritar man endast i JPanel. D: … kan man göra med överskuggning av paintComponent

Vad skriver programmet? Quiz fråga: Vad skriver programmet?

S1 Vad skriver programmet? A: HiHoHu C: Hi Ho Hu D: ingen av A, B, C public class S1 { public static void main(String[] args) { System.out.print("Hi"); System.out.print("Ho"); System.out.print("Hu"); } A: HiHoHu C: Hi Ho Hu D: ingen av A, B, C B: Hi Ho Hu

S1 Vad skriver programmet? A: HiHoHu C: Hi Ho Hu D: ingen av A, B, C public class S1 { public static void main(String[] args) { System.out.print("Hi"); System.out.print("Ho"); System.out.print("Hu"); } A: HiHoHu C: Hi Ho Hu D: ingen av A, B, C B: Hi Ho Hu

S2 Vad skriver programmet? A: 1-\n-2-\t-3 C: 1—2—3 D: ingen av A, B, C public class S2 { public static void main(String[] args) { System.out.print("1-\n-2-\t-3"); } A: 1-\n-2-\t-3 C: 1—2—3 D: ingen av A, B, C B: 1- -2- -3

S2 Vad skriver programmet? A: 1-\n-2-\t-3 C: 1—2—3 D: ingen av A, B, C public class S2 { public static void main(String[] args) { System.out.print("1-\n-2-\t-3"); } A: 1-\n-2-\t-3 C: 1—2—3 D: ingen av A, B, C B: 1- -2- -3

S3 Vad skriver programmet? A: 0 0 0 1 C: 0 0 2 2 D: ingen av A, B, C public class S3 { public static void main(String[] args) { int i = 0; System.out.println(i + " " + (i++) + " " + (++i) + " " + (i+1)); } A: 0 0 0 1 C: 0 0 2 2 D: ingen av A, B, C B: 0 1 2 3

S3 Vad skriver programmet? A: 0 0 0 1 C: 0 0 2 2 D: ingen av A, B, C public class S3 { public static void main(String[] args) { int i = 0; System.out.println(i + " " + (i++) + " " + (++i) + " " + (i+1)); } A: 0 0 0 1 C: 0 0 2 2 0 0 2 3 D: ingen av A, B, C B: 0 1 2 3

S4 Vad skriver programmet? A: i + "" + i C: 22 D: ingen av A, B, C public class S4 { public static void main(String[] args) { int i = 2; System.out.println(i + "" + i); } A: i + "" + i C: 22 D: ingen av A, B, C B: 4

S4 Vad skriver programmet? A: i + "" + i C: 22 D: ingen av A, B, C public class S4 { public static void main(String[] args) { int i = 2; System.out.println(i + "" + i); } A: i + "" + i C: 22 D: ingen av A, B, C B: 4

S5 Vad skriver programmet? A: 2 1 3 C: 2 3 4 D: ingen av A, B, C public class S5 { public static void main(String[] args) { int[] a = { 2, 3, 1, 0 }; int i = 0; while (a[i] != 0) { i = a[i]; System.out.print(i + " "); } A: 2 1 3 C: 2 3 4 D: ingen av A, B, C B: 2 1 1

S5 Vad skriver programmet? A: 2 1 3 C: 2 3 4 D: ingen av A, B, C public class S5 { public static void main(String[] args) { int[] a = { 2, 3, 1, 0 }; int i = 0; while (a[i] != 0) { i = a[i]; System.out.print(i + " "); } A: 2 1 3 C: 2 3 4 D: ingen av A, B, C B: 2 1 1

S6 Vad skriver programmet? A: 0,1,2,3 C: 1,2,3,0 D: ingen av A, B, C public class S6 { public static void swap(int[] a, int i, int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static void main(String[] args) { int[] a = { 0, 1, 2, 3 }; for(int i=0; i<a.length; i++) { swap(a,i,i+1); System.out.println(a[0]+","+a[1]+","+a[2]+","+a[3]); A: 0,1,2,3 C: 1,2,3,0 D: ingen av A, B, C B: 0,0,0,0

S6 Vad skriver programmet? A: 0,1,2,3 C: 1,2,3,0 D: ingen av A, B, C public class S6 { public static void swap(int[] a, int i, int j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } public static void main(String[] args) { int[] a = { 0, 1, 2, 3 }; for(int i=0; i<a.length; i++) { swap(a,i,i+1); System.out.println(a[0]+","+a[1]+","+a[2]+","+a[3]); A: 0,1,2,3 C: 1,2,3,0 0,1,2,3 D: ingen av A, B, C B: 0,0,0,0

S7 Vad skriver programmet? A: 3 2 1 0 1 C: 3 2 1 1 2 1 1 public class S7 { public static int fib(int i) { System.out.print(i + " "); if (i < 2) { return i; } else { return fib(i-1) + fib(i-2); } public static void main(String[] args) { fib(3); A: 3 2 1 0 1 C: 3 2 1 1 2 1 1 D: ingen av A, B, C B: 3 1 2 0 1

S7 Vad skriver programmet? A: 3 2 1 0 1 C: 3 2 1 1 2 1 1 public class S7 { public static int fib(int i) { System.out.print(i + " "); if (i < 2) { return i; } else { return fib(i-1) + fib(i-2); } public static void main(String[] args) { fib(3); A: 3 2 1 0 1 C: 3 2 1 1 2 1 1 D: ingen av A, B, C B: 3 1 2 0 1

S8 Vad skriver programmet? A: 1,2,3,0 C: 1,2,3,0 D: ingen av A, B, C public class S8 { public static int[] foo(int[] a, int k) { int[] temp = new int[a.length]; for (int i=0; i<a.length; i++) { temp[i] = a[(i+k) % a.length]; } return temp; public static void main(String[] args) { int[] a = { 0, 1, 2, 3 }; a = foo(a,4); System.out.println(a[0]+","+a[1]+","+a[2]+","+a[3]); A: 1,2,3,0 C: 1,2,3,0 D: ingen av A, B, C B: 0,1,2,3

S8 Vad skriver programmet? A: 1,2,3,0 C: 1,2,3,0 D: ingen av A, B, C public class S8 { public static int[] foo(int[] a, int k) { int[] temp = new int[a.length]; for (int i=0; i<a.length; i++) { temp[i] = a[(i+k) % a.length]; } return temp; public static void main(String[] args) { int[] a = { 0, 1, 2, 3 }; a = foo(a,4); System.out.println(a[0]+","+a[1]+","+a[2]+","+a[3]); A: 1,2,3,0 C: 1,2,3,0 D: ingen av A, B, C B: 0,1,2,3

S9 Vad skriver programmet? A: 9 C: 18 D: ingen av A, B, C B: 27 public class S9 { public static void main(String[] args) { int[][] a = { {0,0},{0,0},{0,0},{0,0} }; a[0][0] = 5; a[1] = a[0]; a[3] = a[1]; a[3][1] = 1; a[3] = a[2]; a[3][1] = 3; int res = 0; for (int i=0; i<a.length; i++) { for (int j=0; j<a[i].length; j++) { res = res + a[i][j]; } } System.out.println(res); A: 9 C: 18 D: ingen av A, B, C B: 27

S9 Vad skriver programmet? A: 9 C: 18 D: ingen av A, B, C B: 27 public class S9 { public static void main(String[] args) { int[][] a = { {0,0},{0,0},{0,0},{0,0} }; a[0][0] = 5; a[1] = a[0]; a[3] = a[1]; a[3][1] = 1; a[3] = a[2]; a[3][1] = 3; int res = 0; for (int i=0; i<a.length; i++) { for (int j=0; j<a[i].length; j++) { res = res + a[i][j]; } } System.out.println(res); referensvärdet a[0] kopieras referensvärdet a[0] skrivs över A: 9 C: 18 D: ingen av A, B, C B: 27

S10 Vad skriver programmet? A: x=15 a.y=15 b.y=5 C: x=15 a.y=10 b.y=5 public class S10 { static int x = 0; int y = 0; public int foo(int k) { x = x+k; y = y+k; return x+k; } public static void main(String[] args) { S10 a = new S10(); S10 b = new S10(); a.foo(b.foo(5)); System.out.println("x=" + x + " a.y=" + a.y + " b.y=" + b.y); A: x=15 a.y=15 b.y=5 C: x=15 a.y=10 b.y=5 D: ingen av A, B, C B: x=5 a.y=5 b.y=5

S10 Vad skriver programmet? A: x=10 a.y=15 b.y=5 C: x=15 a.y=10 b.y=5 public class S10 { static int x = 0; int y = 0; public int foo(int k) { x = x+k; y = y+k; return x+k; } public static void main(String[] args) { S10 a = new S10(); S10 b = new S10(); a.foo(b.foo(5)); System.out.println("x=" + x + " a.y=" + a.y + " b.y=" + b.y); A: x=10 a.y=15 b.y=5 C: x=15 a.y=10 b.y=5 D: ingen av A, B, C B: x=5 a.y=5 b.y=5

T3 Vad vill ni göra nu? A: endast quiz B: 10 min quiz till, sen resten problemlösning C: 20 min quiz till, sen resten problemlösning D: endast problemlösning Uppgift: Skriv ett enkelt ritprogram. 1. Man bör kunna rita bollar, rektanglar, linjer, mm. 2. Man bör kunna välja färg med knappar. 3. Man bör kunna trycka på undo och redo knappar.

Ritprogrammet som skrevs på föreläsningen Det blev inte klart. import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Rita extends JFrame { private class DrawingPanel extends JPanel implements MouseListener { private int x = -40; private int y = -40; private Color c = Color.PINK; public DrawingPanel() { addMouseListener(this); } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.WHITE); g.fillRect(0,0,getWidth(),getHeight()); g.setColor(c); g.fillRect(x-5,y-5,10,10); public void mouseClicked(MouseEvent e) { x = e.getX(); y = e.getY(); this.repaint(); public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void setColor(Color c) { this.c = c; } public Rita() { JPanel main = new JPanel(new BorderLayout()); JPanel colors = new JPanel(); JPanel mode = new JPanel(new GridLayout(2,1)); DrawingPanel drawing = new DrawingPanel(); main.add(colors,BorderLayout.SOUTH); main.add(mode,BorderLayout.WEST); main.add(drawing,BorderLayout.CENTER); JButton red = new JButton("Red"); JButton blue = new JButton("Blue"); colors.add(red); colors.add(blue); red.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { drawing.setColor(Color.RED); }); blue.addActionListener(new ActionListener() { drawing.setColor(Color.BLUE); JButton cir = new JButton("Circle"); JButton rec = new JButton("Rectangle"); mode.add(cir); mode.add(rec); this.add(main); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400,350); setVisible(true); public static void main(String[] args) { Rita f = new Rita(); Ritprogrammet som skrevs på föreläsningen Det blev inte klart. Just nu går det endast att rita (eller egentligen flytta på) en rektangel. Kan du få programmet att rita flera rektanglar? Kan du implementera undo och redo?

Quiz fråga: Vad ska (???) vara?

B1 Vad ska (???) vara? A: w,h,10,10 C: w-10,0,10,10 import java.awt.*; import javax.swing.*; public class B1 extends JPanel { // draws a 10x10 box in the top right corner public void paintComponent(Graphics g) { super.paintComponent(g); int w = getWidth(); int h = getHeight(); g.fillRect( ??? ); } A: w,h,10,10 C: w-10,0,10,10 D: ingen av A, B, C B: w-10,h-10,10,10

B1 Vad ska (???) vara? A: w,h,10,10 C: w-10,0,10,10 import java.awt.*; import javax.swing.*; public class B1 extends JPanel { // draws a 10x10 box in the top right corner public void paintComponent(Graphics g) { super.paintComponent(g); int w = getWidth(); int h = getHeight(); g.fillRect( ??? ); } A: w,h,10,10 C: w-10,0,10,10 D: ingen av A, B, C B: w-10,h-10,10,10

B2 Vad ska (???) vara? A: private static double C: private static int // represents circles public class B2 { private static int circleCount = 0; ??? radius = 0; public B2(int radius) { this.radius = radius; circleCount = circleCount+1; } public int getRadius() { return radius; } public static int getTotal() { return circleCount; } A: private static double C: private static int D: ingen av A, B, C B: public static int

radius bör vara en instansvariabel Vad ska (???) vara? // represents circles public class B2 { private static int circleCount = 0; ??? radius = 0; public B2(int radius) { this.radius = radius; circleCount = circleCount+1; } public int getRadius() { return radius; } public static int getTotal() { return circleCount; } radius bör vara en instansvariabel A: private static double C: private static int D: ingen av A, B, C B: public static int

B3 Vad ska (???) vara? A: setVisible(true); C: p.add(b); this.add(p); import java.awt.*; import javax.swing.*; // a form with a button public class B3 extends JFrame { public B3() { JPanel p = new JPanel(); JButton b = new JButton("Knapp"); ??? } A: setVisible(true); C: p.add(b); this.add(p); D: ingen av A, B, C B: add(p); p.add(b);

B3 Vad ska (???) vara? A: setVisible(true); C: p.add(b); this.add(p); import java.awt.*; import javax.swing.*; // a form with a button public class B3 extends JFrame { public B3() { JPanel p = new JPanel(); JButton b = new JButton("Knapp"); ??? } A: setVisible(true); C: p.add(b); this.add(p); D: ingen av A, B, C B: add(p); p.add(b);

B4 Vad ska (???) vara? A: new GridLayout(1,3) C: new FlowLayout() import java.awt.*; import javax.swing.*; // a frame with three buttons on a line public class B4 extends JFrame { public B4() { JButton b1 = new JButton("Knapp 1"); JButton b2 = new JButton("Knapp 2"); JButton b3 = new JButton("Knapp 3"); JPanel p = new JPanel(???); p.add(b1); p.add(b2); p.add(b3); this.add(p); } A: new GridLayout(1,3) C: new FlowLayout() D: ingen av A, B, C B: new BorderLayout()

B4 Vad ska (???) vara? A: new GridLayout(1,3) C: new FlowLayout() import java.awt.*; import javax.swing.*; // a frame with three buttons on a line public class B4 extends JFrame { public B4() { JButton b1 = new JButton("Knapp 1"); JButton b2 = new JButton("Knapp 2"); JButton b3 = new JButton("Knapp 3"); JPanel p = new JPanel(???); p.add(b1); p.add(b2); p.add(b3); this.add(p); } A: new GridLayout(1,3) C: new FlowLayout() D: ingen av A, B, C B: new BorderLayout()

B5 Vad ska (???) vara? A: actionPerformed() C: al.actionPerformed(e); import javax.swing.*; import java.awt.event.*; // a timer that ticks twice every delay milliseconds public class B5 extends Timer { public B5(int delay, ActionListener al) { super(delay,new ActionListener() { public void actionPerformed(ActionEvent e) { al.actionPerformed(e); ??? } }); A: actionPerformed() C: al.actionPerformed(e); D: ingen av A, B, C B: actionPerformed(e)

B5 Vad ska (???) vara? A: actionPerformed() C: al.actionPerformed(e); import javax.swing.*; import java.awt.event.*; // a timer that ticks twice every delay milliseconds public class B5 extends Timer { public B5(int delay, ActionListener al) { super(delay,new ActionListener() { public void actionPerformed(ActionEvent e) { al.actionPerformed(e); ??? } }); A: actionPerformed() C: al.actionPerformed(e); D: ingen av A, B, C B: actionPerformed(e)

B6 Vad ska (???) vara? A: b = a; a = b; C: t = b; b = a; a = t; public class B6 { // swaps the content of arrays a and b public void swap(int[] a, int[] b) { if (a.length == b.length) { int[] t; ??? } else { throw new IllegalArgumentException("argh!"); } A: b = a; a = b; C: t = b; b = a; a = t; D: ingen av A, B, C B: a,b = b,a;

B6 Vad ska (???) vara? A: b = a; a = b; C: t = b; b = a; a = t; public class B6 { // swaps the content of arrays a and b public void swap(int[] a, int[] b) { if (a.length == b.length) { int[] t; ??? } else { throw new IllegalArgumentException("argh!"); } for (int i=0; i < a.length; i++) { int k = a[i]; a[i] = b[i]; b[i] = k; } A: b = a; a = b; C: t = b; b = a; a = t; D: ingen av A, B, C B: a,b = b,a;

B7 Vad ska (???) vara? A: extends C: throws D: ingen av A, B, C import javax.swing.*; import java.awt.event.*; // writes Hej every second public class B7 ??? ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Hej!"); } public B7() { Timer t = new Timer(1000,this); t.start(); A: extends C: throws D: ingen av A, B, C B: implements

B7 Vad ska (???) vara? A: extends C: throws D: ingen av A, B, C import javax.swing.*; import java.awt.event.*; // writes Hej every second public class B7 ??? ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Hej!"); } public B7() { Timer t = new Timer(1000,this); t.start(); A: extends C: throws D: ingen av A, B, C B: implements

B8 Vad ska (???) vara? A: (int i=0; i<k; i++) public class B8 { // moves the content of a up by one public void swap(int[] a) { int k = a.length; for ??? { a[i+1] = a[i]; } A: (int i=0; i<k; i++) C: (int i=k-1; 0<=i; i--) D: ingen av A, B, C B: (int i=0; i<k-1; i++)

B8 Vad ska (???) vara? A: (int i=0; i<k; i++) public class B8 { // moves the content of a up by one public void swap(int[] a) { int k = a.length; for ??? { a[i+1] = a[i]; } A: (int i=0; i<k; i++) C: (int i=k-1; 0<=i; i--) D: ingen av A, B, C B: (int i=0; i<k-1; i++)

B9 Vad ska (???) vara? A: (a[i] != k) C: (0 <= i && a[i] != k) public class B9 { // returns true if (and only if) k is in array a public void find(int k, int[] a) { int i = a.length-1; while ??? { i = i-1; } return 0 <= i; A: (a[i] != k) C: (0 <= i && a[i] != k) D: ingen av A, B, C B: (a[i] != k && 0 <= i)

B9 Vad ska (???) vara? A: (a[i] != k) C: (0 <= i && a[i] != k) public class B9 { // returns true if (and only if) k is in array a public void find(int k, int[] a) { int i = a.length-1; while ??? { i = i-1; } return 0 <= i; A: (a[i] != k) C: (0 <= i && a[i] != k) D: ingen av A, B, C B: (a[i] != k && 0 <= i)

B10 Vad ska (???) vara? A: Comparable C: Object D: ingen av A, B, C public class B10 { // returns the maximum value of an array public ??? findMax(???[] a) { if (a == null || a.length == 0) { throw new RuntimeException(); } ??? max = a[0]; for (int i=1;i<a.length;i++) { if (max.compareTo(a[i]) < 0) { max = a[i]; } return max; A: Comparable C: Object D: ingen av A, B, C B: int

B10 Vad ska (???) vara? A: Comparable C: Object D: ingen av A, B, C public class B10 { // returns the maximum value of an array public ??? findMax(???[] a) { if (a == null || a.length == 0) { throw new RuntimeException(); } ??? max = a[0]; for (int i=1;i<a.length;i++) { if (max.compareTo(a[i]) < 0) { max = a[i]; } return max; A: Comparable C: Object D: ingen av A, B, C B: int