Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 9 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.

Lignende præsentationer


Præsentationer af emnet: "GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 9 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder."— Præsentationens transcript:

1 GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 9 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder 9.15. www.itu.dk/courses/GP/E2005 Martin Lillholm

2 GP9, Martin Lillholm 2 Evaluering Tak for ris og ros! Jeg svarer og vi diskuterer sidste gang.

3 GP9, Martin Lillholm 3 Obligatorisk opgave Var opgaven til i onsdags 1.For nem 2.For svær 3.Tilpas – skulle bruge noget tid og tanker på den, men så var den også til at løse/forstå. Er der nogen, der ikke har afleveret fordi den slet ikke var til at få hul på?

4 GP9, Martin Lillholm 4 Sidste gang Wrapper klasser Interfaces Typer i Java Polymorfi Søgning og sortering

5 GP9, Martin Lillholm 5 Denne gang Graphical User Interfaces (GUI) Denne uges opgave Projekter med relevans for GP

6 GP9, Martin Lillholm 6 Graphical User Interfaces (GUI) Hvad er GUI ? Eksempler på GUI bestanddele –Vinduer –Paneler –Labels, ikoner/billeder (output), –Tekstfelter (input / output) –Knapper –Radioknapper, checkbokse –Valglister, sliders –Mus, tastatur –Menuer, dialogbokse –Timere –Layout Et hurtig historie: http://toastytech.com/guis/guitimeline.htmlhttp://toastytech.com/guis/guitimeline.html GUI er kompliceret og ofte besværligt – men ikke teoretisk svært

7 GP9, Martin Lillholm 7 Vores GUI bestanddele i Java Vinduer og paneler: Grafik:

8 GP9, Martin Lillholm 8 Vores GUI bestanddele i Java Labels (ikoner/billeder): Knapper:

9 GP9, Martin Lillholm 9 Vores GUI bestanddele i Java Tekstfelter: Dialogbokse:

10 GP9, Martin Lillholm 10 Vores GUI bestanddele i Java Checkbokse: Radioknapper:

11 GP9, Martin Lillholm 11 Vores GUI bestanddele i Java Layoutmanagere:

12 GP9, Martin Lillholm 12 Vores GUI bestanddele i Java Museinteraktion: Tastaturinteraktion:

13 GP9, Martin Lillholm 13 Vores GUI bestanddele i Java Timere:

14 GP9, Martin Lillholm 14 GUI i Java 101... Hændelsesdrevet Klassebibliotekerne java.awt.* og java.swing.* Vinduer er typisk instanser af JFRAME Paneler er instanser JPanel. Egne paneler arver typisk fra JPanel Både JFrame og JPanel er containere. Første heavyweight; anden lightweight JFrame’ s indeholder som regel blot et hovedpanel Paneler indeholder som regel andre paneler og/eller øvrige GUI- komponenter Layout-managere

15 GP9, Martin Lillholm 15 GUI – basics Frame Panel Label Paneler kan indeholde andre paneler og GUI-komponenter Diskussion og gennemgang i BlueJ af: –Authority.java (side 144) –LabelDemo.java (side 149) –NestedPanels.java (side 146)

16 GP9, Martin Lillholm 16 GUI – mere om paneler Paneler og paintComponent metoden Forskel mellem GUI-komponenter (eksempelvis labels og andre paneler) og elementer (eksempelvis linier og cirkler), der tegnes via paintComponent metoden paintComponent kaldes bl.a. ved: –Oprettelse af vinduer –Maksimering af minimerede vinduer –Eksplicit med kommandoen repaint() (nødvendigt for visse typer hændelser) Diskussion og gennemgang i BlueJ af: –SmilingFace.java (side 177)

17 GP9, Martin Lillholm 17 Traditionel programafvikling (repetition) Starter normalt i main Afvikler, i sin simpleste form, ordrer i main i den i rækkefølge de optræder Afviklingsrækkefølgen (flow of control) påvirkes bl.a. af: –Metodekald (eventuelt indlejrede) –Løkker ( for, while og do ) –Betingede sætninger ( if og switch ) Programafviklingen og dermed programmet stopper (normalt) når sidste ordre i main er udført Tavlegennemgang

18 GP9, Martin Lillholm 18 Hændelsesdrevede programmer (Event-driven programs) Hændelser (events) – eksempelvis: –Aktivering af knap –Udfyldning af tekstfelt –Museklik, tastatur input Programafviklingsrækkefølgen påvirkes hver gang en hændelse håndteres af en lytter (listener) main og eventuelle konstruktører bruges til at initialisere vinduer, paneler og GUI-komponenter Håndtering af hændelser (listeners eller event handlers) Programmet kører så længe en GUI-applikation er åben; selvom alle kommandoer i main er udført Tavlegennemgang

19 GP9, Martin Lillholm 19 GUI komponenter og listeners Listeners er typisk indlejrede klasser Listeners og interfaces En listener kan godt lytte/reagere på flere hændelser Diskussion og gennemgang i BlueJ af: –Fahrenheit.java (side 190) –LeftRight.java (side 258) –PushCounter.java (side 186) –StyleOptions.java (side 265) –QuoteOptions.java (side 269)

20 GP9, Martin Lillholm 20 Dialogbokse Dialog bokse kan kaldes fra et vilkårligt java program Bruges typisk i listeners til at håndtere: –Fejlsituationer –Verifikation af brugervalg –Ekstraordinære situationer Diskussion og gennemgang i BlueJ af –EvenOdd.java (side 262)

21 GP9, Martin Lillholm 21 Layout-managere Styrer hvordan komponenter placeres i paneler Det er ikke muligt at styre GUI-komponenters præcise placering eksplicit; bestemmes indirekte via valg af layout- manager Oftest benyttes kombinationer af layout-managere og indlejrede paneler (containment hierarchies, 265) –Flow layout –Border layout –Grid layout –Box layout Diskussion og gennemgang i BlueJ af: –LayoutDemo.java (side 340)

22 GP9, Martin Lillholm 22 Yderligere interaktion via mus ”Normal” interaktion med GUI-applikationer via mus fungerer automatisk via listenere til de specifikke komponenter (eksempelvis knapper, tekstbokse og checklister) Det kan være nødvendigt med yderlige interaktion via mus (eksempelvis et tegneprogram) Diskussion og gennemgang i BlueJ af: –Dots.java (side 413)

23 GP9, Martin Lillholm 23 Yderligere interaktion via tastatur ”Normal” interaktion med GUI-applikationer via tastatur tastatur fungerer automatisk via listenere til de specifikke komponenter (eksempelvis tekstfelter) Det kan være nødvendigt med yderligere interaktion via tastatur (eksempelvis hot-keys) Diskussion og gennemgang i BlueJ af: –Direction.java (side 421)

24 GP9, Martin Lillholm 24 Timere Timer klassen kan benyttes til automatisk at generere hændelser med jævne mellemrum og kan eksempelvis benyttes til: –Checke om en bestem betingelse er opfyldt –Flytte eller ændre en GUI-komponent med jævne mellemrum (eksempelvis animation) Timers forsinkelse måles i millisekunder (1000 ms per sekund) Diskussion og gennemgang i BlueJ af: –Rebound.java (side 471)

25 GP9, Martin Lillholm 25 The Component Class Hierarchy L&L side 463-464

26 GP9, Martin Lillholm 26 Dagens obligatoriske opgave Opgave 1: Opgave 2:


Download ppt "GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 9 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder."

Lignende præsentationer


Annoncer fra Google