TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

Relevanta dokument
Grafik: Att "rita" egna komponenter

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

Sammansatta datatyper Generics: Parametrisk polymorfism

Objektorientering: Lagring, räckvidd och livstid

Objektorientering: Lagring och livstid

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

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

Lab5 för prgmedcl04 Grafik

Laboration 3 GUI-programmering

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

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

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

TDDD78 Objektorientering: Lagring och livstid

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

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

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

ID1004 Laboration 3, 5-6 November 2012

3.5 Visuell programmering

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

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) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Rita Egna Bilder, Timer

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

Objektorienterad programmering

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

Föreläsning 13 Innehåll

Laboration 0. Enhetsbokstaven anges med ett kolon efter och man läser ofta ut detta, exempelvis C:(sekolon).

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

TDDD78 Objektorientering i Java, del 2

PROGRAMMERINGSTEKNIK TIN212

Felhantering TDDD78, TDDE30, 729A

diverse egenskapspaletter

kl Tentaupplägg

Ja, men resultatet blir inte lika bra. Det är att skapa genvägsikoner. Se anvisningar nedan:

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Bilaga 4, Skapa grafiskt användargränssnitt med guide

Ärvning av implementation. Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva?

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

TDDD78 Viktiga begrepp, del 2

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

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Manual SIGNUMERIC. För Richter maskiner

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Laboration 1: Figurer i hierarki

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

Administratörsrättigheter i Windows krävs för att genomföra installationen.

Arv och polymorfism i Java

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Eclipse. Kort genomgång

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

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Installationsguide för FAR Komplett Offline 2.1.2

BridgeView. Klasser i BridgeView. Klassen Grafiska Gränssnittet. Klassen TSPELET

kl Tentaupplägg

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

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

Tentamen i Introduktion till programmering

Exempel på användning av arv: Geometriska figurer

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

TENTAMEN I DATAVETENSKAP

Klassen javax.swing.timer

Instruktion till. PigWin PocketPigs. Del 1 - Installation

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Grunder. Grafiktyper. Vektorgrafik

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

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

2D1339 Programkonstruktion för F1, ht 2003

Högskolan i Halmstad Multimedia och visuell kommunikation Övning 1 Adobe Flash, grundfunktioner & interpolering. Efter övningen förväntas du kunna:

HI1024 Programmering, grundkurs TEN

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

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

Modeller och teknik Grundl program och gränssnitt. Matlab-tips

Programmering. Scratch - grundövningar

ID1004 Laboration 4, November 2012

Applets med komponenter

Föreläsning 5-6 Innehåll

Extramaterial till Matematik Y

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Rullningslisten. Klicka på rullningslistpilar (pil upp eller pil ner) 1 för att förflytta dig i önskad riktning, en liten bit i taget.

Uppgift 18 Eget programval

DAT043 - föreläsning 8

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Ladibug TM 2.0 Bildbehandlingsprogram för dokumentkamera Bruksanvisning

Manual för upprättande av MB Brounderhåll

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

LUVIT LMS Quick Guide LUVIT Composer

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

Att ladda ner från legimus.se

Användargränssittet (Front-end) i mobilversionen bygger i stor utsträckning på jquery Mobile-ramverket.

Macromedia Flash MX 2004

Transkript:

TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Grafik: Att "rita" egna komponenter

Intro 1: Rita Allt på skärmen ritas som pixlar Även de vanliga GUI-komponenterna 2 Gradienter, skuggning Matematisk fontkurva görs till pixlar, slätas ut Rundade hörn

Intro 2: Egna komponenter 3 Detta behövs också för att skapa egna komponenter Genomgående exempel: Analog klocka Bakgrund, cirklar, tre visare Projekt: Ofta spel Ofta egen komponent för spel-gui, plus standardkomponenter (menyer osv)

Rita 1: Egen komponent 5 Komponenter: Subklasser till

Rita 2: Callback-metod 6 Hur kan vi rita en ClockComponent? Liknar ActionListeners: Vi implementerar en callback-metod (i ett objekt) Swing anropar metoden vid behov från händelsehanteringstråden Skillnad: Metoden implementeras direkt i komponentklassen

Rita 3: paintcomponent() 7 Swings händelsehanteringstråd anropar för att rita upp komponentens innehåll Komponenten definierar hur den ska ritas Swing ger oss ett -objekt som kan rita på denna komponent

Rita 4: Swing anropar paintcomponent() 8 Så Swing (inte vi!) anropar (): Den första gången fönstret visas När komponenten visas igen efter att ha varit övertäckt

Rita 5: Vi anropar repaint() 9 Om vi vill uppdatera innehållet: Vi ber Swing att anropa () åt oss Min etikett ändrades be Swing att måla om mig När vi vill stega framåt: be Swing att måla om spelkomponenten Lägger en begäran om omritning i "att-göra"-listan Hanteras när det finns tid

Rita 6: Hur stor är jag? 10 Layouthanteraren kan bestämma komponentens storlek Komponenten frågar: "Hur stor är jag?"

Grafik 1: Graphics-klassen 12 : Begränsad repertoar, en metod per "form"

Grafik 2: java.awt.graphics2d 13 Nyare subklass : Godtyckliga former Skapa ett Shape-objekt, och anropa: För allt som implementerar gränssnittet, även egna former! Likheter med Pythons grafikpaket och olikheter Formen ritar ut sig själv Graphics-objektet ritar formen

Grafik 3: Exempel 14 Rita med Graphics2D Bakåtkompatibilitet: Parameter av typ Det verkliga värdet är jag lovar! Skapa ett (parametrar av dubbel precision)

Grafik 4: Fördefinierade former 15 Fördefinierade former: och, etc.

Grafik 6: Text För att rita text: Välj en font ( ) Plus stil och punktstorlek 16 Font.PLAIN Font.BOLD Font.ITALIC Font.BOLD + Font.ITALIC Använd gärna logiska" fontnamn Times, Arial? Palatino, Helvetica? Använd ()

Exempel 1: Klockkomponent 17 Klockkomponent:

Exempel 2: Klockkomponent 18 "Hur hög och bred är jag, klockan, på skärmen?"

Exempel 3: Använda klockkomponent 19 Defaultfärg Tunna linjer "Hackiga" linjer

Stilar 1: I Graphics-objektet 21 Pythons grafikpaket: Stilar är del av formen Java: Sätt stilen i Graphics-objektet Gäller för allt som målas därefter

Stilar 2: Färger 22 Färger och fyllmönster implementerar : : Solid färg Statiska fält för några standardfärger: anger en gradient mellan två färger:

En modifierad klocka 23 Kantutjämning på Grön cirkel, tjockare penna Ange linjetjocklek

En modifierad klocka (2) 24 Resultat:

Regelbundna uppdateringar 1 26 Än så länge står klockan stilla även om den ritas om För att uppdatera regelbundet: Skapa uppdateringslyssnare Eller uppdatera ett helt speltillstånd: Flytta spelare ett steg, testa kollisioner,

Regelbundna uppdateringar 2 27 Olika paket har klasser med samma namn! javax.swing.timer använder Swings händelsehanteringstråd (viktigt i GUI)!

Regelbundna uppdateringar 3 28 Överkurs: Enklare med lambdafunktion

Mer under vanliga lösningar 29

Resurser 1: Data på samma plats som kod 31 Hur kan programmet hitta sina egna bildfiler, ljudfiler, osv? Program kan installeras på olika platser, särskilt med olika OS Hela programmet kan packas i en JAR-fil Java Archive, i princip en ZIP-fil Resurser laddar datafiler på samma sätt som kod Se till att filerna finns på samma plats som den kompilerade koden Be klassladdaren att hitta filerna åt dig

Resurser 2: Få med datafiler i kompileringen 32 I IDEA kan man ange vilka filer som är resurser 1) Placera under source-mappen; ange namnmönster (?*.jpg;?*.png) 2) Placera i annan mapp; högerklicka; "mark directory as / resources root" Vid kompilering inkluderar IDEA de utvalda filerna Annat kommer inte med i programmet

Resurser 3: Användning 33 Klassladdaren kan tala om hur man hittar resursfiler på samma ställe som klasser " Resultat: URL som pekar ut resursen. Exempel: Låt ImageIcon-klassen läsa från given URL

Resurser 4: Alternativ 34 Alternativ: Öppna, och läs som från en vanlig fil