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

Relevanta dokument
Klasser för grafik och bildhantering

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

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

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

Grafiska användargränssnitt i Java

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

Händelsestyrda program

Grafiska användargränssnitt i Java

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

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

Lab5 för prgmedcl04 Grafik

Grafiska användargränssnitt i Java

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

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

Arv och Grafiska Användargränssnitt

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

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

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

Lektion Händelsehanterare

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

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

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsning 7. Grafiska användargränssnitt

PROGRAMMERINGSTEKNIK TIN212

Programstyrd / händelsestyrd

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.

Objektorienterad programmering

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

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

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

Objektorienterad programmering Föreläsning 2

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

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

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

OOP Objekt-orienterad programmering

Windows Forms Winstrand Development

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

3.5 Visuell programmering

Mer om grafiska komponenter. Händelsestyrda program

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

A. Datorn från grunden

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

Klassen javax.swing.timer

Imperativ programmering. Föreläsning 4

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

Programmering. Scratch - grundövningar

Programmera Kontaktlåda USB i Mac

Grafiska användargränssitt och händelsehantering

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 15: Repetition DVGA02

Vop handledning. Användarhandledning till Vop applikationen. UPPGJORD: Mattias Gyllsdorff GODKÄND:Mattias Gyllsdorff REV: A DATUM:

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Laboration 3 GUI-programmering

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Tentamen i Objektorienterad programmering

OOP Objekt-orienterad programmering

Objektorienterad programmering. Grundläggande begrepp

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

Laboration 2: Designmönster

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Kursplanering Objektorienterad programmering

Properties. Användbara metoder som kan anropas i propertychanged:

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Skapa mapp. * Gör så här: Det finns många sätt att skapa mappar, men det enklaste sättet brukar vara följande.

Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Laboration 2: Designmönster

Fyra i rad Javaprojekt inom TDDC32

Beskrivning av gesällprov RMI Chat Mikael Rydmark

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

Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME

Applets med komponenter

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

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

Laboration 15 Grafiskt användargränssnitt

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

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

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

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

Laboration 1 Introduktion till Visual Basic 6.0

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Inställningar för mus och tangentbord i Windows 7

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

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

Transkript:

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 genom att göra val på menyer, klicka på knappar, fylla i textrutor etc. Varje operation som användaren utför kan få programmet att göra olika saker. Viktig aspekt: Användaren bestämmer i vilken ordning olika operationer ska utföras (i motsats till ett textorienterat interface). Hur tar programmet emot interaktion från användaren? 1 3 Grafiska användarinterface (GUI) Byggstenarna i ett GUI... En pil som styrs av användaren, fönster och ikoner som skapas av en applikation, diverse komponenter, till exempel knappar, skjutreglage, textfält,... Användaren kommunicerar med fönstersystemet via klick och musrörelser. Användaren kan tex flytta omkring fönster på skärmen påverkar ej applikationen. GUI: Typiska klasser och interface för interaktion AWTEvent Abstrakt klass. Representerar en händelse. ActionEvent Subklass till AWTEvent. Denna brukar genereras vid knapptryckningar etc. (knapp = klassen Button) ActionListener Interface. En klass som hanterar ActionEvents måste implementera detta gränssnitt. MouseListener Interface. Används om man vill fånga upp mushändelser direkt. MouseAdapter Abstrakt klass. Implementerar MouseListener. Definierar tomma metoder för alla metoder i MouseListener. 2 4

Scenario för enkel interaktion Användaren klickar på ett fönster Händelsen representeras med ett objekt i klassen AWTEvent Swing tar reda på motsvarande komponent genom en sökning i trädet av komponenter och anropar dess händelselyssnare med händelsen som argument. Den anropade metoden tolkar händelsen genom att utföra önskade operationer och om fönstrets utseende ändrats, anropar repaint() Olika typer av händelser (forts) KeyEvent (tangenttryckning) e.getkeycode() vilken tangent e.getkeychar() vilket tecken e.getcomponent() 5 7 Händelser Olika typer av händelser, tex MouseEvent e.getx(), e.gety() ger koordinater e.clickcount() antal musklick e.getcomponent() ger den komponent som musen befinner sig i. Händelser: ett enkelt exempel Program: HandelseTest.java 6 8

Exempel: Kalkylator Utöka kalkylatorexemplet (från tidigare föreläsning) så att man kan räkna på den! Vad behöver göras? Skriv händelselyssnare som talar om vad knapparna gör. 9 11 Kalkylator: Händelselyssnare En lokal klass AddSiffra som hanterar inmatning av siffror. Händelselyssnaren anropas när användaren klickar på en siffertangent. En lokal klass AddOp vars händelselyssnare anropas när användaren klickar på någon av + - * / eller =. Komplikation: operationen ska utföras först när det andra argumentet har matats in. 10 12

Kalkylatorexemplet Kommentar: Egentligen inget bra exempel på objekt-orienterad programmering... Idéer: Bygg en separat klasshierarki för de olika knapparna. Exempel: Ett enkelt ritprogram Undvik allt för tät koppling mellan knapparna och kalkylatorn. Definiera knapparna utanför kalkylatorn, istället för att göra dem till lokala klasser. 13 15 Knappar: Klasshierarki Knapp Abstrakt klass, superklass för övriga knappar SifferKnapp Ärver av Knapp. Varje instans av klassen svarar mot en siffertangent. OpKnapp Abstrakt klass. Superklass för +*-/= PlusKnapp Plustangent. [Och så vidare] Program: Kalylator2.java 14 16

En texteditor Program: Prickar.java Det är lätt att skriva en basal texteditor i Java. Man använder helt enkelt en instans av klassen TextField för själva redigeringen. Dessutom krävs möjligheter att läsa in och spara filer. Knappar för detta placerar vi i en meny. Program: TextEdit.java 17 19 Prickar: Kommentarer Notera: Interface MouseListener kräver att ett antal metoder för olika mushändelser definieras. Dessa har egentligen inte så mycket med vårt problem att göra. Klassen MouseAdapter implementerar MouseListener och definierar alla metoder (med tom kropp). Genom att ärva från MouseAdapter slipper man definiera en massa metoder som man ändå inte använder. Ett enkelt ritprogram Scribble.java implementerar en applet i AWT. Scribble2.java. Lite mer sofistikerad. Bilden försvinner inte om fönstret skyms. Scribble3.java. Som applikation. Scribble4.java. Menyer för att spara och läsa in filer. Sparar med DataOutputStream. Scibble5.java. Sparar med ObjectOutputStream. 18 20

Sammanfattning Användaren bestämmer i vilken ordning saker ska ske ett klick i ett fönster ger ett anrop till motsvarande händelselyssnare en händelselyssnare är ett objekt som skapats för detta ändamål när du kodar händelselyssnaren bestämmer du vad som ska hända i en viss situation 21