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



Relevanta dokument
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.

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

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

MER Java Foundation Classes (JFC)

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

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

Java-concept och Swing. Swing low, sweet chariot

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

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

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

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

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

Mer om grafiska komponenter. Händelsestyrda program

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

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

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

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

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

Projekt 2 XL. Observer-mönstret

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

Lab5 för prgmedcl04 Grafik

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

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

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

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

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

OOP Objekt-orienterad programmering

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

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

1 Grafiska komponenter

Labbinstruktioner för Java/Swing

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

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

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

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

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

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

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

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

Rita Egna Bilder, Timer

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

Grafiska komponenter.

OOP Objekt-orienterad programmering

MVC-mönstret. model-view-control i Swing

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Arv och Grafiska Användargränssnitt

Laboration 15 Grafiskt användargränssnitt

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

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

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

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

Tentamen i Objektorienterad programmering

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

Lösningar till tentamen i EDAF25

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

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Frames, menyer och GUI-program

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

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

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

Lösningar till tentamen i EDAF25

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

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

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

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

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

Händelsestyrda program

Grafiska användargränssnitt i Java

Lösningar för tenta 3 DAT043,

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Efterhand fick vi ett system som vi tyckte var väl anpassat. Vi renskrev kladden (nedan) och började programmera menyerna.

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

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

Objektorienterad Programmering (TDDC77)

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

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

Fönsterhantering, grafik

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

Applets med komponenter

Lektion Händelsehanterare

Laboration 24 Databasen MySQL och java

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

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

Lösningsförslag till tentamen

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Laboration 4: Game of Life

Transkript:

MER Java Foundation Classes (JFC) Swing Swing Många klasser" Vettigt att lära sig dem utantill" - Tror inte det" -... men det kan vara bra att ha en liten överblick över vad som finns" - Idag (och med fortsättning på måndag) kommer vi ta en snabbgenomgång kring ett antal av klasserna och se på ett par av designmönstrena som används. 115 116 Hur lära sig? Principerna" - Model - view - controller" - Observer - observed" - Adapter" Öva, dvs skriv kod" - Ofta och mycket" Kolla på exempel Vad är farorna Personlig erfarenhet" - Dålig dokumentation i vissa fall" Sätter sällan in saker i sitt sammanhang" - Logik på fel ställe" Lätt att man placerar logiken på det ställe där det för stunden känns enklast istället för att tänka igenom var saker borde finnas 117 118 Exempel på några av komponenterna LayoutManagers BorderLayout - Har vi tittat på" FlowLayout - Har vi tittat på" GridLayout" CardLayout" BoxLayout" etc" Designmönster (Strategy) 119 120

GridLayout GridLayout Demo import javax.swing.jbutton; import javax.swing.jframe; public class GridDemo public static void main(string[] args) JFrame frame=new JFrame(); frame.setlayout(new GridLayout(3,2)); frame.add(new JButton("Ett")); frame.add(new JButton("Två")); frame.add(new JButton("Tre")); frame.add(new JButton("Fyra")); frame.add(new JButton("Fem")); frame.add(new JButton("Sex")); frame.setvisible(true); 121 122 Card layout 123 124 CardLayoutDemo TabbedPane Komponent som kan användas som ett substitut för att direkt använda sig av CardLayout" Tabbar läggs till med addtab eller inserttab" Se TabbedPaneDemo 125 126

BoxLayout Med denna LayoutManager så kan man lägga ut komponenter i boxar. Boxarna kan vara antingen horisontella eller vertikala med en komponent per rad/ kolumn." Alternativ till att använda BoxLayout direkt är att använda Box klassen som är en container som har använder BoxLayout och innehåller ett antal extra metoder för att tex lägga till mellanrum" På bilden till höger används ett antal olika containrar med BoxLayout för att åstadkomma layouten Fler LayoutManagers Det finns ett flertal andra färdiga." Undersök de klasser som implementerar någon av interfacen LayoutManager eller LayoutManager2." Rätt sällan man behöver skriva egna." De flesta gränssnitt går att konstruera genom en kombination av de inbyggda. 127 128 Layoutmanagers och designpatterns Layoutmanagers använder sig av ett designpatern som kallas för Strategy." Löser problemet att vi vill kunna ha möjlighet att byta ut algoritmer Konstruera egna Vyklasser Man behöver själv rita upp utseendet" - Händelsestyrt - styr inte själv" - paintcomponent(graphics g)" Omdefinieras för att rita om komponentens utseende" - repaint (flera olika överlagrade finns)" Anropas för att meddela att komponenten behöver ritas om pga någon tillståndsförändring 129 130 Graphics Exempel på metoder i Graphics" - drawstring" - drawline" - drawrect" - drawpolygon" - fillrect" - fillpolygon" - setcolor" - setfont 131 132

Java 2D Förbättrad grafik så att det blir lite snyggare" Anti-aliasing" Fyll med mönster, gradienter, etc" Bättre typsnittshantering" Mer objektorienterat" figurer, linjer, transformeringar" Graphics objektet som skickas till tex paintcomponent är egentligen ett Graphics2D-objekt" - Vi kan typkonvertera till denna typ och sedan använda den nya funktionaliteten Fler prylar JOptionPane" JLabel" Flera knappar" ImageIcon" Menyer, toolbars, etc" JScrollPane" Popupmenyer" Listor 133 134 JOptionPane Enkelt att göra olika meddelandedialoger " Finns färdiga" Kan modifiera och göra egna JOptionPane.showMessageDialog( null, "Kolla", "Vad kul", JOptionPane.ERROR_MESSAGE ); x = JOptionPane.showConfirmDialog( null, "Hello world") ; s = JOptionPane.showInputDialog( null, "Skriv nåt" ); JOptionPane.showMessageDialog( null, "Du skrev: " + s, "Meddelande", JOptionPane.INFORMATION_MESSAGE ); 135 136 JLabel Enkel text" eller en bild" eller båda private JLabel info =new JLabel() info.settext( Användare: +username) Knappar Push buttons" Check buttons" Radio buttons" Grupper av radio buttons 137 138

ImageIcon Enkelt sätt att få symboler på olika ställen" Klarar JPEG, GIF och PNG bilder" Inte en egen komponent, men ett antal andra komponenter kan visa upp ImageIcons (tex JLabel, Menyer etc) Menyer Menyrad" Menyer" Menyval 139 140 JMenuBar menubar = new JMenuBar( ); setjmenubar( menubar ); JMenu file = new JMenu( "Arkiv" ); JMenu edit = new JMenu( "Redigera" ); class OpenAction extends AbstractAction OpenAction( String name ) super( name, new ImageIcon( "bilder/middle.gif" ) ); menubar.add( file ); menubar.add( edit ); JMenuItem fileclose = new JMenuItem( "Stäng" ); public void actionperformed( ActionEvent ae ) statusline.settext( "Inte öppnas nåt nu inte" ); fileclose.addactionlistener( new ActionListener() public void actionperformed( ActionEvent ae ) // Stäng fönstret AddressBook.this.dispose(); ); file.add( fileclose ); 141 file.add( new OpenAction( "Öppna" ) ); 142 Toolsbars Ligger längst upp" Flyter omkring 143 144

JToolBar tb = new JToolBar( ); tb.add( new HiAction() ); tb.add( new PlainAction( ) ); class PlainAction extends AbstractAction PlainAction( ) super( "plain", new ImageIcon( "bilder/rabbit.png" ) ); public void actionperformed( ActionEvent ae ) statusline.settext( "Jag vill ha en morot" ); Popup-menyer JPopupMenu" För att visa dessa för en komponent så sätt en MouseListener på componenten och identifiera om mustryckningen är en något som ska visa upp menyn via metoden ispopuptrigger i MouseEvent" JComboBox 145 146 String[] petstrings = "Bird", "Cat", "Dog", "Rabbit", "Pig" ; JComboBox petlist = new JComboBox(petStrings); petlist.setselectedindex(4); petlist.addactionlistener(this); public void actionperformed(actionevent e) JComboBox cb = (JComboBox)e.getSource(); String petname = (String)cb.getSelectedItem(); updatelabel(petname); Listor JList" Listor av godtyckliga objekt JComboBox patternlist = new JComboBox(patternExamples); patternlist.seteditable(true); patternlist.addactionlistener(this); 147 148 JScrollPane Implementerar scrollning till en component JScrollPane sp = new JScrollPane( jl ); add( sp ); 149