Design och konstruktion av grafiska gränssnitt

Relevanta dokument
Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Layout och Navigation

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

Laboration 3 GUI-programmering

Design och konstruktion av grafiska gränssnitt

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

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

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

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

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

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

Design och konstruktion av grafiska gränssnitt

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

Design och konstruktion av grafiska gränssnitt

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Lösningar till tentamen i EDAF25

Design och konstruktion av grafiska gränssnitt

DAT043 - Föreläsning 7

Design och konstruktion av grafiska gränssnitt

Windows Forms Winstrand Development

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

F4. programmeringsteknik och Matlab

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

Lösningar till tentamen i EDAF25

Design och konstruktion av grafiska gränssnitt

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

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

Design och konstruktion av grafiska gränssnitt

Classes och Interfaces, Objects och References, Initialization

Konstruktion av klasser med klasser

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

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

DAT043 - föreläsning 8

Design och konstruktion av grafiska gränssnitt

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

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

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

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Verktyg och Utvecklingsmiljö. Jochim von Hacht

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

Lektion Händelsehanterare

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Android översikt. TDDD80 Mobila och sociala applikationer

Lab5 för prgmedcl04 Grafik

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

Design och konstruktion av grafiska gränssnitt

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Lösningar för tenta 3 DAT043,

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

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

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

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

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4

Lösningsförslag tentamen FYTA11 Java

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Parallellism, återblick

Design och konstruktion av grafiska gränssnitt

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Mer om grafiska komponenter. Händelsestyrda program

Design och konstruktion av grafiska gränssnitt

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

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

ID1004 Laboration 4, November 2012

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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

PROGRAMMERINGSTEKNIK TIN212

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

Föreläsning 12. Länkade listor

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

DAT043 Objektorienterad Programmering

Transkript:

Design och konstruktion av grafiska gränssnitt Olof Torgersson Interaktionsdesign Data- och informationsteknik Chalmers/GU 1

Idag Organisera innehåll forts, Getting round Swing Application Framework & Actions Kod bakom lab 1 Kursutvärdering mm Till kursutvärderingen behövs några frivilliga Vem? Första möte på måndag efter föreläsningen? Det går inte att anmäla sig till tentan, men det ska finnas plats till alla Lab 2 börjar inte denna veckan. Läs och repetera istället 2

Interaktionsdesignspraxis Fastställ behov och krav loop Utveckla alternativa designförslag Bygg interaktiva prototyper för kommunikation and analys Utvärdera designen baserat på prototyperna end loop Några mönster Allmänt Mönster är förslag på fungerande lösningar Måste anpassas efter situationen Nytta Kan man många är chansen större att man hittar något lämpligt för en given situation Ger en vokabulär för att diskutera design Studera/reflektera kring program man använder Är beprövade Först lite organisera innehåll 3

(15) one-window drilldown Vad Visa alla applikationens vyer/sidor i samma fönster. När man väljer ett alternativ byts hela ytan ut mot den nya sidan. När Programmet består av många olika sidor (organiserade linjärt eller hierarkiskt) att navigera genom och man har en liten skärm eller det blir enklare för användarna på detta sätt. Varför Enkelt. Allting finns på en skärm. Alla vet hur man navigerar på webben som funkar på detta sätt. Hur Organisera innehållet i lagom stora delar. Förse dessa med lämpliga navigationskontroller. Se till att man kan komma tillbaka. Andra mönster som Breadcrumbs kan vara till hjälp. Exempel 4

(16) alternative views (16) alternative views Vad Låt användaren välja mellan flera olika vyer som är signifikant olika När Applikationer som visar upp någon form av strukturerat innehåll som kan ses på olika sätt Varför En vy räcker inte för att fungera bra för allt som behövs. Genom att skifta synvinkel ges fler möjligheter och mer/annan information. Hur Designa speciella vyer för scenarios som inte fungerar bra med standardvyn. Visa dessa istället för standardvyn. Placera en switch för att byta vyer på något lämpligt ställe. 5

Exempel (14) canvas + palette (18) extras on demand Läs också 6

GETTING AROUND Navigera Enkel tumregel Ju mindre navigation desto bättre Få fönster Allt man behöver tillhands Analogi gå in i nytt rum Ta in all information som finns bakom dörren Undvika djupa gångar Många rum att ta in och man ska tillbaka också Försök alltid eliminera onödiga steg Före Under Efter designprocessen 7

Vad har vi? Användarstudier Mentala modeller Personas Platform Posture sovereign, transient Typiska kategorier intermediate, expert, novice Organisera innehåll Lista objekt, handlingar, verktyg, kategorier Tiled panes, single windows Mönster Minimera navigation Next lite mönster när man ändå måste navigera (21) Clear entry points 8

(21) clear entry points Vad Ha bara några få ingångar till programmet. Gör dessa uppgiftsorienterade och tydliga När (Uppgiftsbaserade) program som används sällan. Om uppgiften är uppenbar kan det bara vara ett irriterande extrasteg Varför När man startar ett program kan man mötas av ett komplicerat GUI med massor av möjligheter där det inte är uppenbart vad man ska göra. Hjälp användaren förbi detta steg. Hur Visa ett antal tydliga dörrar när programmet startar. Därifrån går man vidare till det man ska göra. Dörrarna kan vara ikoner, text etc, men de ska kunna förstås av förstagångsanvändare Exempel 9

10-01-28 forts (22) global navigation 10

(22) global navigation Vad Använd en liten del av varje sida/skärm till att visa en uppsättning knappar/länkar som leder till programmets olika delar När Mer komplicerade applikationer med ett antal olika avdelningar och verktyg där man kan vilja byta mellan dessa. Det finns tillräckligt med utrymme (sovereign) Varför På webben är detta vanligt och kan förväntas av användare. Det kan också vara användbart i vanliga applikationer och ger användaren en översikt och hjälp att utforska. Hur Organisera först upp innehållet. Det kan inte finnas för många olika delar. Designa en navigeringspanel som är samma överallt och som finns på samma ställe. Markera var man är nu tydligt. Exempel 11

(26) sequence map (26) sequence-map Vad Visa på varje sida i en sekvens en karta över alla steg, med markering för var man är nu. När Man har en applikation där ett antal olika steg ska gås igenom. Navigationen är huvudsakligen linjär. Varför Ge en bild både av vad man klarat av och hur mycket det finns kvar. Ge en känsla av sammanhang. Hur Placera en liten karta när någon kant (över, under, vänster ) på samma ställe överallt. Visa tydligt var man är nu och vilka delar man redan besökt. 12

10-01-28 (26) exempel (27) breadcrumbs 13

(27) breadcrumbs Vad Visa på alla sidor i en hierarkiskt ordnad applikation en karta över alla överliggande sidor ända upp till huvudsidan När Användarna navigerar runt, vanligen kombinerat med onewindow drilldown. Kan kombineras med sökning Varför Hjälper användaren att förstå var han/hon är. Spåret ger en bild av en del av applikationen. Fungerar även om man inte navigerat dit. Hur Placera en sekvens av text eller bilder nära toppen på sidan som visar vägen från toppen till nuvarande sida. Man kan typiskt navigera till vilken sida som helst i sekvensen direkt genom att klicka. Exempel 14

(29) color-coded sections (22) color-coded sections Vad Använd färg för visa vilken del av en applikation en sida hör till När Applikationen består av många sidor/skärmar som kan grupperas logiskt i olika enheter. Varför Fungerar som en markör/skylt för var man är. Kan göras subtilt eller övertydligt. Håller också ihop delarna. Ytterligare en navigationsindikator som övriga. Hur Ha något element som byter färg för de olika sektionerna. Bakgrund är ofta för markant. Bättre nån ram, dekoration el dyl. Fungerar kanske inte för färgblinda. 15

(29) exempel Läs också (24) pyramid (31) escape hatch 16

Vad har vi? Användarstudier Mentala modeller Personas Platform Posture sovereign, transient Typiska kategorier intermediate, expert, novice Organisera innehåll Lista objekt, handlingar, verktyg, kategorier Tiled panes, single windows Mönster Minimera navigation Navigationsmönster clear entry points, global navigation Summan av detta saker att utgå från i en top-down process Mer kommer SWING APPLICATION FRAMEWORK 17

Program är lika Alla program har gemensamma delar Starta Ladda GUI Avsluta Dumt att koda detta om och om igen Applikationsramverk istället Swing Application Framework.NET Cocoa Swing Application Framework Avsett för mindre och medelstora program Hjälper till med: Application life-cycle startup, shutdown Stöd för att hantera resurser strängar, bilder, färger, fonter Stöd för Actions, inklusive actions som körs i bakgrunden Persistent state sparar fönsterstorlekar etc Det finns andra mycket mer fullständiga ramverk NetBeans platform Eclipse platform. NetBeans ger extra stöd med en projektmall för SingleFrameApplication Detta används i labben 18

Översikt Life-cycle public class AddressBookApp extends SingleFrameApplication launch sköts av SingleFrameApplication, anropas av main initialize optional startup NetBeans-mallen skapar huvudfönstret. ready - optional exit anropas av SingleFrameApplication när fönstret stängs. shutdown här placerar man kod som ska utföras innan programmet stängs ner Görs i labben 19

Förhindra nerstängning @Override protected void startup() { show(new DesktopApplication3View(this)); addexitlistener(new ExitListener() { public boolean canexit(eventobject e) { boolean boktoexit = false; Component source = (Component) e.getsource(); boktoexit = JOptionPane.showConfirmDialog(source, Vill du verkligen avsluta?") == JOptionPane.YES_OPTION; return boktoexit; public void willexit(eventobject event) { ); Resurser Sköts på det stora hela av NetBeans Exempel från labben ResourceMap resourcemap = AddressBookApp.getApplication().getContext(). getresourcemap(getclass()); ImageIcon frameicon = resourcemap.getimageicon("frame.icon"); this.getframe().seticonimage(frameicon.getimage()); Actions är ytterligare en feature men först något om Actions i Java 20

Actions - vad & varför? Ofta har man t ex både en meny och en knapp i ett verktysfält som göra samma sak De har samma actionperformed Kanske samma text Samma tooltip Samma ikon Ska vara enablade och disablade samtidigt etc Det blir mycket duplicerad kod Ett Action object samlar allt på samma ställe, sen amenu.setaction(action) abutton.setaction(action) Hjälp Interface Action Klass AbstractAction Det enda man behöver implementera är metoden actionperformed i en subklass till AbstractAction http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html Action leftaction = new LeftAction(); button = new JButton(leftAction) menuitem = new JMenuItem(leftAction); leftaction.setenabled(false); 21

Exempel leftaction = new LeftAction("Go left", anicon, "This is the left button.", new Integer(KeyEvent.VK_L)); class LeftAction extends AbstractAction { public LeftAction(String text, ImageIcon icon, String desc, Integer mnemonic { super(text, icon); putvalue(short_description, desc); putvalue(mnemonic_key, mnemonic); public void actionperformed(actionevent e) { displayresult("action for first button/menu item", e); NetBeans & SAF Swing Application Framework ger extra stöd. Tagga med @Action och resten med editor @Action public void new() { // do something alt @Action public void new(actionevent evt) { // do something 22

Lab1-kod Lab 1 en slags model-view-presenter Vy-klasser innehåller ett absolut minimum av logik och egen kod Skillnad: presenter har referenser till både modell och vy och synkar dessa. MVD presenteras på en massa olika sätt, även detta Klasser i backend Contact Model Presenter De 2 första vet inget om GUI:t och skulle kunna användas i annat sammanhang Presenter package se.chalmers.cse.dat215.lab1; import javax.swing.jlist; import javax.swing.jtextfield; public class Presenter { private static Presenter instance = null; protected Presenter() { // Exists only to defeat instantiation. model = Model.getInstance(); public static Presenter getinstance() { if (instance == null) { instance = new Presenter(); return instance; 23

forts public void init() { contactslist.setmodel(model.getlistmodel()); contactslist.setselectedindex(0); public void setcontactslist(jlist l) { contactslist = l; public void setnametextfield(jtextfield t) { nametextfield = t; public void setlastnametextfield(jtextfield t) { lastnametextfield = t; forts public void newcontact() { Contact c = model.newcontact(); contactslist.setselectedvalue(c, true); public void contactslistchanged() { if (contactslist.getselectedindex()!= -1) { Contact c = (Contact) contactslist.getselectedvalue(); model.setselectedcontact(c); presentcontact(c); private void presentcontact(contact c) { nametextfield.settext(c.getfirstname()); lastnametextfield.settext(c.getlastname()); phonetextfield.settext(c.getphone()); emailtextfield.settext(c.getemail()); 24

forts public void textfieldfocusgained(java.awt.event.focusevent evt) { JTextField t = (JTextField) evt.getsource(); t.selectall(); public void textfieldfocuslost(java.awt.event.focusevent evt) { JTextField t = (JTextField) evt.getsource(); if (t.equals(nametextfield) t.equals(lastnametextfield)) { nametextfieldfocuslost(evt); else { contactedited(); Att göra Titta igenom alla Swing-komponenter Veta vad som finns och vad de gör Swing-tutorial på nätet Läsa Preface och kapitel 1 i Tidwell Läsa kapitel 2 i Tidwell Kan hoppa över mönster 19 & 20 Läsa Cooper om Mental Models & Posture Läsa kapitel 3 i Tidwell Kan hoppa över mönster 23, 25 & 30 tills vidare Förstå Actions http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html Nästa gång Fler designmönster Lite mer Swing 25