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

Relevanta dokument
Klasser för grafik och bildhantering

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

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

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

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

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

OOP Objekt-orienterad programmering

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

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

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

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

OOP Objekt-orienterad programmering

1 Grafiska komponenter

Grafiska komponenter.

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation.

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

Arvshierarki. Object. Bostadshus. Flerfamiljshus. Villa

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

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

Grafiska användargränssnitt i Java

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Lab5 för prgmedcl04 Grafik

27. GUI Programming. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

Mer om grafiska komponenter. Händelsestyrda program

Design och konstruktion av grafiska gränssnitt

Arv och Grafiska Användargränssnitt

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

Arv. Grafiska komponenter. Arv. Arvhierarki. Arv. Föreläsning 12 (OH-bilder 9)

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

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

Java-concept och Swing. Swing low, sweet chariot

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

Malmö högskola 2007/2008 Teknik och samhälle

Java Direkt, upplaga 5 Innehåll

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

Laboration 15 Grafiskt användargränssnitt

Design och konstruktion av grafiska gränssnitt

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

Föreläsning 9. Arv Grafiska komponenter

Design och konstruktion av grafiska gränssnitt

Arv, Grafiska användaregränssnitt och Inre klasser! Förelasning 12!! TDA540 Objektorienterad Programmering!

Design och konstruktion av grafiska gränssnitt

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

Java Direkt, upplaga 7 Innehåll

Java Direkt, upplaga 6 Innehåll

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Fönsterhantering, grafik

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

Laboration 3 GUI-programmering

Lektion Händelsehanterare

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Föreläsning 15: Repetition DVGA02

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

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

GUI Nyckelbeståndsdelar

Projekt 2 XL. Observer-mönstret

Malmö högskola 2007/2008 Teknik och samhälle

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 13: Swing (GUI), händelser, timer

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

Java Direkt, upplaga 8 Innehåll

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

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Tentamen , Grundläggande programmering i Java

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

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

Malmö högskola 2007/2008 Teknik och samhälle

Föreläsning 9. Arv Grafiska komponenter. Arv. Arv. Implementationsarv

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

PROGRAMMERINGSTEKNIK TIN212

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Klasshierarkier - repetition

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

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

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

Fyra i rad Javaprojekt inom TDDC32

Frames, menyer och GUI-program

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

Ingenjörsfirman Stéen Java Sida 1 av 1

Föreläsning Arv. Föreläsning 9. Arv Grafiska komponenter. Grafiska komponenter. Arv. Arv

Design och konstruktion av grafiska gränssnitt

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Arv och polymorfism i Java

Tentamen i Objektorienterad programmering

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

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Grafiska program i Java. AWT och Swing? AWT. Swing. JButton. Button

Transkript:

Swing och AWT Objektorienterad programmering med Java Swing Sven-Olof Nyström Uppsala Universitet March 14, 2006 Skansholm: Kapitel 6 AWT = Abstract windowing toolkit använder värddatorns fönstersystem (och ärver därigenom look and feel ) En minsta gemensam nämnare tillåter bara de operationer som definieras i samtliga fönstersystem (Windows, Mac, Unix...) Man kan till exempel inte ha en knapp med en bild. 1 3 Programexempel Hello.java, Hej2.java Kvadrat.java Hello.html (enkel html) Direkt3.java, Direkt3.html (applets) Direkt3bjava, Direkt3bhtml Frame3.java (en applikation i Swing) Swing och AWT (forts) Swing: Helt skrivet i Java Swing definierar motsvarigheter till nästan alla AWTs komponenter + några klasser till Klasserna i Swing ärver från klasser i AWT Swing definierar sitt eget utseende. Man kan välja look and feel oberoende av värddator. 2 4

Grafiska användarinterface (GUI) Vad består ett GUI av? En pekare pil som styrs av användaren. fönster och ikoner som skapas av en applikation. Diverse komponenter, till exempel knappar, skjutreglage, textfält, bilder Användaren kommunicerar med fönstersystemet via klick och musrörelser. Design av ett GUI: Två problem Presentera information från programmet Ta emot information från användaren (musrörelser, klickningar och tangenttryckningar) [Idag fokuserar vi på det första problemet] 5 7 Vad består... (forts) Användaren kan tex flytta omkring fönster på skärmen påverkar ej applikationen. 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). Vad gäller för de olika byggstenarna (komponenterna) i ett GUI? (tex: fönster, knappar, skjutreglage,...) De ritas på skärmen (och har färg, form,...) tar emot knapptryckningar.. vissa hanteras som självständiga objekt på skärmen, andra ingår som komponenter i nåt större 6 8

Komponenter i AWT Component Button TextComponent Checkbox Container Label List Scrollbar Canvas Komponenter i Swing (forts) Window(AWT) Frame(AWT) Dialog(AWT) Applet(AWT) TextArea TextField Panel Window ScrollPane JWindow JFrame JDialog JApplet Applet Dialog Frame 9 11 Komponenter i Swing Container(AWT) Om AWT och Swing JComponent... JSlider JScrollBar JScrollPane JTextComponent AbstractButton JPanel JLabel AWT och Swing har ungefär samma struktur Swing ingår som en del av AWTs klasshierarki: alla klasser i Swing ärver från AWT-klassen Container JEditorPane JTextArea JTextField JToggleButton JButton Klasser i Swing har ett namn som börjar på J JRadioButton JCheckBox 10 12

De grundläggande byggstenarna Komponenter (arvingar till Component) Behållare (arvingar till Container) Layouthanterare (implementerar gränssnittet LayoutManager) Händelser (arvingar till den abstrakta basklassen AWTEvent) Lyssnare (gränssnitt som man implementerar för att ta hand om händelser) Klassen Component Klassen Component har metoder för Uppritning: paint(graphics), update(graphics), repaint() Händelsehantering (senare föreläsning) Egenskaper: färg - setforeground(color),..., typsnitt - setfont(font), Font getfont() storlek - setsize(int w, int h),... position - setlocation(int x, int y),..., 13 15 De grundläggande byggstenarna (forts) Alla komponenter utom fönster (Window och Dialog) måste placeras i en behållare för att synas. Man placeras en komponent genom att anropa någon av behållarens add-metoder. Vilken metod man bör använda styrs av vilken layout-hanterare man valt. Klassen Component: koordinater Varje komponent har sitt eget koordinatsystem med (0, 0) i övre högra hörn. Positionen anges i behållarens koordinatsystem. Notera att positionen normalt inte anges på detta sätt, man överlåter ansvaret på en layout-hanterare. 14 16

Om AWT och Swing (forts) Vissa av klasserna svarar mot igenkännbara komponenter, tex Frame, JFrame ett fönster (med kanter och titelrad) Dialog, JDialog ett dialogfönster för tillfälliga meddelanden Button, JButton klickbara knappar CheckBox, JCheckBox en ruta som användaren markerar för att göra ett visst val Label, JLabel en enkel text eller bild Om AWT och Swing (forts) JWindow ett fristående fönster på skärmen, utan kanter och titelrad. JComponent Superklassen för (nästan) alla komponenter i Swing. Motsvarar klasserna Component och Container i AWT. Förutom funktionaliteten från Component och Container hanterar JComponent ramar, tips (en slags hjälpfunktioner), hantering av tangenttryckningar. 17 19 Om AWT och Swing (forts) Andra klasser beskriver interna strukturer som inte är direkt synliga för användaren, tex Component Se ovan Container Beskriver vanligen en yta som andra komponenter kan placeras på. Definierar en metod add för att lägga till komponenter (och en metod remove för att ta bort). Om AWT och Swing (forts) JPanel En rektangulär yta på skärmen. Beskriver en del av ett fönster. Man kan använda ett system av JPanel-objekt för att beskriva en komplicerad layout. JScrollPane Rymmer en enda komponent. Om storleken för den komponent som lagras är större än JScrollPane-objektet, adderas skjutreglage så att man kan se hela objektet. 18 20

Några hjälpklasser Dimension Höjd och bredd Color Färg Font Olika typsnitt, tex new Font... Border Ramar Graphics Ett slags ritverktyg som skickas som parameter till metoder som ritar upp en komponent Layout Beskriver hur komponenter ska placeras på en yta Container En container kan innehålla andra komponenter (barnkomponenter). Motsats: föräldrakomponenter add(x) adderar en komponent add(n, x) för att placera komponent vid viss position remove(x) för att ta bort getparent() för att ta fram föräldern 21 23 En närmare titt på Container, JComponent och JWindow Förenklad klassstruktur Container Container (forts) För att placera en komponent b i ett fönster w (tex JFrame), skriv JComponent JFrame,JWindow JDialog, JInternalFrame w.getcontentpane().add(b) getcontentpane plockar fram en särskild arbetsyta. [Diverse verktyg och skrivytor] 22 24

Container: Utseende En mängd metoder, tex background(color), getbackground() setforeground(color), getforeground() setfont(font), getfont() setborder(border), getborder() Layout: exempel c.setlayout(new BorderLayout()) bestämmer layoutstrategi för en container. För att placera nåt på den övre delen, skriv c.add("north",...); Program: VisaBorderLayout.java, VisaBorderLayout2.java, VisaBorderLayout2.java 25 27 Container: Layout I stället för att placera ut komponenterna i ett fönster med (tex) koordinater, använder man speciella layouthanterare som placerar ut komponenterna enligt någon strategi. På så sätt får man (förhoppningsvis) en design som fungerar bra på olika typer av skärmar, om användaren ändrar storlek etc. BorderLayout Arbetar med max 5 komponenter. Dessa ska placeras på någon av positionerna North, West, Center, East, South Layout (forts) GridLayout Placerar ut komponenterna enligt ett koordinatsystem. Program: VisaGridLayout.java FlowLayout Komponenterna placeras från vänster till höger, uppifrån och ner Program: VisaFlowLayout.java BoxLayout Radar upp komponenterna horisontellt eller vertikalt CardLayout Komponenterna placeras på varandra så att en komponent i taget blir synlig. 26 28

Exempel: Kalkylator En kalkylator består av två delar; ett sifferfönster och en knappsats. Konstruera knappsatsen med gridlayout och placera sifferfönstret och knappsatsen med borderlayout. Programexempel: Kalk.java Liknar en kalkylator, men designen är inte helt lyckad. Försök 2, med snyggare knappar. kalk2.java 29 Sammanfattning Java har två system för att skriva GUI AWT och Swing I ett program med ett GUI styr användaren vad som ska hända härnäst Vi har fokuserat på att presentera information för användaren mycket pyssel men egentligen inte så komplicerat 30