1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

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.
Klasser och objekt.
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
Repetition av objektorientering
OOP Objekt-orienterad programmering
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
Arv.
Polymorfism.
Programmeringsteknik för K och Media
Swing Grafik delen i Java kallas för Swing. Swing är stort; ca 800 klasser i 16 paket. Swing är en utveckling av AWT (Abstarct Window Toolkit). AWT var.
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
1 Föreläsning 8 Grafik AWT. 2 Grafik Frame använder man för att skapa ett fönster Button använder man om man vill ha en knapp att trycka på Canvas är.
Alice in Action with Java
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Objektorienterad programmering i Java
Programmering i C# 3. Klasser.
4. Arv och dynamisk bindning
MSPEL Föreläsning 2 Text, teckensnitt och grafiska komponenter
Vektorer (klassen Vector) Sortering
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.
Polymorfism.
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
ITK:P1 Lektion 4 Att implementera en spelidé i Java DSV Peter Mozelius.
1 MSPEL Lektion 2 DSV Peter Mozelius Spel i Java applets.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
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 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
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 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
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.
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
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.
7. Delegerare och notifierare
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
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.
OOP&M - teori1 OOP del III– Föreläsning vecka 9 GUI Containers och LayoutManagers (Inner classes)
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
OOP&M - teori1 OOP&M del III– Föreläsning 3 vecka 6 Kontrollkomponenter (Components) Som Applets.
OOP&M - teori1 OOP&M del III– Föreläsning 23 vecka 15 Graphics Graphics2D Menyer JMF.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOP del III– Vecka 10 Händelser Kontrollkomponenter (Components) Featuring: Applets.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
Föreläsning 13: Swing (GUI), händelser, timer
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering

2 Grafiska gränssnitt i Java  Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren  I Java finns två parallella komponenthierarkier som gör det enkelt att bygga fungerande GUI:s  AWT (Abstract Windowing Toolkit) – tungviktskomponenter, plattformsberoende  Swing (Infördes som Core Java i ver 1.2) – lättviktskomponenter, plattformsoberoende

3 AWT-komponenter  Abstract Windowing Toolkit  De grafiska komponenter som funnits med sedan den allra första versionen av Java  Tungviktskomponenter som samarbetar med operativsystemet där applikationen körs  En knapp t ex ser därför annorlunda ut när koden körs i Linux än den gör i Windows  Den gemensamma basklassen är Component

4 AWT-komponenter

5 Paketet java.awt  awt package kan delas i tre delar: – KOMPONENTER: knappar, textrutor... – GRAFIK: bilder, fonter, färger… – LAYOUTMODELLER (Layout Managers)  Separata paket för bl a: – Händelsehantering: java.awt.event – Bildhantering: java.awt.image – Drag n’ Drop: java.awt.dnd

6 Swing-komponenter  På mångas begäran så utökades Java sedan med Swing i JDK 1.2  Swing var från början ett samarbete mellan bl a Sun, IBM och Netscape  En del komponenter har sitt urprung i Netscapes Internet Foundation Classes  Komponenter som ser likadana ut oberoende av plattform och OS  Lättviktskomponeter

7 Swing-komponenter  Swing består av 9st delpaket och en mängd klasser och interface  Grundpaketet heter javax.swing.* – import javax.swing.*;  AWT utgår från klassen Component  Swing utgår från JComponent  Button blir JButton  Label blir JLabel

8 Swing-komponenter  Ett bra sätt att få en liten inblick i det som går att göra med Swing-komponenter är att ta sig till: X:\j2sdk1.4\demo\jfc\SwingSet2\ och sedan klicka upp SwingSet2Plugin.html  JFC = Java Foundation Classes  Innehåller AWT, Swing, Java 2D, Printing mm

9 Model - View  Från början Model – View – Controller MVC  Det viktigaste och det som finns i Swing är att genom separeringen av Model – View skilja mellan logiken (Model) och gränssnittet (View)  Controller = uppdatering Paus 15 min!

10 Java interface  interface - gränssnitt  Ett interface innehåller abstrakta metoder  Ett interface ärvs därför inte utan det implementeras  public class TV implements Fjärrkontroll  I interfacet Fjärrkontroll finns metoder deklarerade som sedan måste implementeras i klassen TV  Exempel: public void bytKanal(int kanal)

11 Java interface  Java stödjer inte multipelt arv  En klass kan implementera flera interface  En samling metoder och konstanter (static final) som inte naturligt passar in i en arvhierarki  Vi kommer på denna kurs enbart att använda färdiga interface från – java.awt.event – javax.swing.event

12 Händelser  En sorts objekt i Java är händelseobjekt som hjälper till med kommunikationen mellan andra objekt när en händelse inträffar  Olika händelseobjekt - event object är specialiseringar av basklassen java.util.Event  De händelser som skapar händelseobjekt behöver avlyssnas - händelselyssning

13 Händelselyssnare  En klass som kan fånga händelser är en lyssnarklass med särskilda metoder som systemet anropar när händelser inträffar  Till vår hjälp har vi lyssnargränssnitt som t ex: – MouseEvent - MouseListener – WindowEvent – WindowListener – ListSelectionEvent - ListSelectionListener

14 Händelselyssnare  Den händelse vi kommer att använda mest är av klassen ActionEvent  Interfacet heter ActionListener och i en klass kan inledas enligt:  public class A extends JFrame implements ActionListener {  Vi kan sedan fånga händelser från komponenter som (J)Button och (J)TextField

15 Händelselyssnare  Den metod som sedan behöver implementeras är actionPerformed: public void actionPerformed(ActionEvent e) { Lite smart kod; }//actionPerformed  Lyssnaren behöver slutligen även registreras knapp1.addActionListener(this); knapp2.addActionListener(this); RAST?

16 AWT-layoutmodeller  Implementeras i kontainerklassen genom: setLayout(Layoutklass);  Olika layoutklasser i AWT: BorderLayout CardLayout FlowLayout GridLayout GridBagLayout

17 AWT-layoutmodeller Defaultmodellen för många komponenter är BorderLayout som explicit sätts genom:  setLayout(new BorderLayout()); North WestCenterEast South

18 AWT-layoutmodeller Fem stycken knappar utplacerade enligt BorderLayout

19 AWT-layoutmodeller  java.awt.FlowLayout  Lägger ut dina komponenter i rader som ord i en ordbehandlare  med konstanterna CENTER LEFT RIGHT  Reglera avstånd ihöjd och sidled med setHgap() och setVgap()  Mycket lätt att använda  Känslig för storleksändringar av fönstret  Default för Panel-objekt

20 AWT-layoutmodeller  java.awt.Gridlayout  Arbeta med rader och kolumner m h a: setRows() setColumns()  Lägger komponenterna i ett rutnät  Alla komponenter blir lika stora  Statiskt och rätt fyrkantigt  Lätt att använda

21 AWT-layoutmodeller panel = new JPanel(); panel.setLayout( new GridLayout(4,4)); add(”Center”,panel);

22 AWT-layoutmodeller  java.awt.GridBagLayout  Med ett rutnät i grunden men med möjligheter till positionering och storleksförändring i med hjälpklassen GridBagConstraints  Elegant, flexibel modell men lite krånglig  Träna först med någon annan LayoutManager

23 Swing-layoutmodeller  Swing-komponenter stödjer alla AWT:s layout-modeller + 6 st nya : BoxLayout, JRootPane.RootLayout OverlayLayout, ViewportLayout SpringLayout och ScrollPaneLayout  Mest användbara är: – BoxLayout – OverlayLayout

24 Repetition från Föreläsning1  På förra årets kurs var det flera studenter som tyckte att det absolut svåraste på kursen var: – Överskuggning – Polymorfism – Dynamisk bindning  Vi kör därför en repetition av dessa viktiga begrepp. Ni som redan förstått hur det hänger ihop behöver inte stanna.

25 Polymorfism  polymorfism = mångformighet  I en klasshierarki kan det i de olika klasserna finnas metoder med samma namn och samma argument/returtyp MEN med olika metodkroppar  Objektorienterade språk har inbyggda mekanismer för dynamisk bindning  Rätt metod körs automatiskt när programmet exekveras

26 Polymorfism I en abstrakt basklass: public abstract class Figur Finns det en abstrakt metod: public abstract double visaArea(); I den ärvande klassen Rektangel: public class Rektangel extends Figur har metoden formats så att den passar för att räkna ut arean hos just en rektangel

27 Polymorfism I klassen Rektangel: public double visaArea() { return bredd * höjd; }//visaArea i klassen Rektangel Medan den i klassen Cirkel överskuggas enligt: public double visaArea() { return PI * radie * radie; }//visaArea i klassen Cirkel

28 Överskuggning  När en eller flera av superklassens instans- metoder omdefinieras i en eller flera subklasser  Vid exekveringen så är det objektets klass som avgör vilken metod som anropas  Olika objekt i en klasshierarki kan på detta sätt behandlas enhetligt utan att varje enskilt objekt måste klassbestämmas  Att rätt metod automatiskt anropas under programkörningen kallas dynamisk bindning

29 Dynamisk bindning i Java  Om en instansmetod metod anropas via referensen ref enligt: ref.metod();  Så undersöker javainterpretatorn vilken klass objektet har som ref refererar till  Om objektets klass har en passande metod() så körs denna  Om inte, så letar javatolken vidare uppåt bland superklasserna tills en metod återfinns

30 Tack för idag!  I slutet på nästa föreläsning tänkte jag att vi även skulle hinna med att prata lite om vad som varit bra och dåligt på årets 2I Tack för idag!