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

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

Java-concept och Swing. Swing low, sweet chariot

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

Laboration 3 GUI-programmering

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

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

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

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

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

Lösningar för tenta 3 DAT043,

ID1004 Laboration 3, 5-6 November 2012

Inlämningsuppgift 1 Programmeringsteknik MN1 vt02

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

Exempel på användning av arv: Geometriska figurer

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

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

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

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

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

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Redovisning av inlämningsuppgifter

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

Laboration 24 Databasen MySQL och java

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

Dugga i Grundläggande programmering STS, åk

Mer om grafiska komponenter. Händelsestyrda program

Versionshantering. Jan Erik Moström

Anvä ndärguide Nyä Expeditionsresor

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

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

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

Guide för pdf-formulär

LULEÅ TEKNISKA UNIVERSITET

Lösningsförslag till tentamen

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Lektion Händelsehanterare

Laboration 10 - NetBeans

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Macromedia. Flash 8 Grundkurs.

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Laboration 10 - Eclipse

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

Laboration 15 Grafiskt användargränssnitt

Lösningsförslag tentamen FYTA11 Java

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

Labb 1: Vad, hur, och varför?

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Labbinstruktioner för Java/Swing

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

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Daniel Clarhed

DAT043 - föreläsning 8

Distribuerade System, HT03

Recitation 4. 2-D arrays. Exceptions

Föreläsnings 9 - Exceptions, I/O

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

Projekt 2 XL. Observer-mönstret

Book Creator App för Ipad

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen FYTA11 Javaprogrammering

Lösningsförslag till tentamen

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Tentamen i Objektorienterad programmering

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

Föreläsning 1, vecka 8: Att förbereda sig för tentan

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

Tentamen i Objektorienterad programmering

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

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Lösningar till tentamen i EDAF25

I18N språkoberoende. ResourceBundle. Ikoner. Färg. Javadoc. Meny

Föreläsning 8: Exempel och problemlösning

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Omentamen FYTA11 Javaprogrammering

Ladda ned appen Plickers till din surfplatta eller mobiltelefon och logga in med samma konto som du skapade ovan. Appen är gratis.

Föreläsning 10. ADT:er och datastrukturer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Allta bilder du ritar med verktygen i verktygspanelen eller importerar är grafik.

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

Transkript:

Övning 3 - grupp 10 Övningen gick ut på att sortera givna funktionerna till ett ritprogram in i en meny. Den startsidan vi fick var blank och såg ut som nedan. I denna skulle vi skapa en meny med hjälp av java kod. Vi börjada med att skriva ner alla funktioner under Where to put these (bilden ovan) på lappar innan vi sorterade dem. Vi parade ihop syskon funktioner som till exempel undo och redo.

Vi försökte finna ett system att gruppera funktionerna logisk. Vad som är logiskt för användaren har mycket att göra med vad han/hon är van med. Vi tog i betraktning hur menyer generellt är uppbyggda i Ms system och olika ritprogram. Där indelas meny rullgardinerna i fil påverkande funktioner, till dokument påverkande funktioner och vidare med olika verktyg som specifierar respektive program. Meny raden, skriven från vänster till höger i samma riktning som engelska läser i, avslutas med Help längst till höger. Efterhand fick vi ett system som vi tyckte var väl anpassat. Vi renskrev kladden (nedan) och började programmera menyerna.

Vi valde att gruppera funktionerna i File, Edit, Image, Tools, Color och Help. Det är grupper som vi anser vara mest logiska för att användaren ska kunna navigera sig smidigast möjligt och för att varje grupp eller rullgardin ska bli lagom lång. Funktionerna i gruppen File påverkar filen. Vi valde att lägga dessa i samma kronologiska ordning som de troligen kommer användas. Man öppnar ett dokument innan man sparar det. Man sparar förhoppningsvis dokumentet innan man skriver ut, exporterar eller avslutar det.

I gruppen Edit ligger funktioner som påverkar innhållet i dokumentet (till skillnad till file som påverkar hela dokumentet som en enhet). Vi la Undo högt upp då denna används ofta. Redo används inte lika ofta, kanske mer sällan än de andra funktionerna men den ligger tillsammans med sitt syskon för att lätt hittas när den behövs. Ordningen på de resterande funktionerna i gruppen är densamma som i mer välkända program för att användaren ska känna igen sig. Image innehåller funktioner som påverkar själva bilden. (Men inte innehållet i bilden). Syskon grupperingen var klar men vi tvekade lite på den inbördes ordningen dessa imellan. Vi la tillsist funktionerna i en ordning som vi tror är med den mest använda funktionen högst upp. Funktionen Watermark används normalt sett inte så ofta och för att listan inte skulle bli så lång så la vi valen till denna funktion i en egen klickbar undermeny. Funktionerna i gruppen Tools påverkar bildet i sig. Här finns rit verktyg som pensel, sudd och olika geometriska figurer. Den inbördes ordningen var inte direkt tydlig för oss. Vi valde att göra tre indelningar med verktyg som till viss del påminner om varandras egenskaper, är avhängig av den andra eller är den totala motsatsen till varandra (den ena tar ut den andra). Ritverktygen blev en grupp, förflyttningar den andra och sist de geometriska figurerna som blev en egen grupp. Beskrivningen av indelningen kan verka rörig men vi blev nöjd med resultatet.

Gruppen färger är normalt i ritprogram ingen egen grupp men i vårt uppdrag skulle tretton färger finnas representerade i menyn. Vi valde för att inte göra en annan rullgardin för lång en egen grupp med färger. Indelnigen blev överst de två kontrastfärger som används mest, svart och vit. Efter följer RGB färger ordnade i regnbågsskalan och till sist gråtonerna, från ljus till mörk. Help är en standgrupp där man finner vägledning och förklaring till programmet och dess funktioner. Här kan du också få veta mer om programmet som program och uppdatera dig med nya versioner. Help funktionen ligger som standard högst upp. Java kod för vårt program: package id.gi.simpledraw; import java.awt.*; import javax.swing. *; public class SimpleDraw extends JFrame { DrawArea drawarea; // Fields of different menues public static int MENU_QUIT = 1000;

public static int MENU_CLEAR_CANVAS = 5000; public static int MENU_HELP = 6000; public static int MENU_ABOUT = 6001; public static int MENU_REGISTER = 6002; public static int MENU_UPDATE = 6003; public static int MENU_BLUR = 7000; public static int MENU_ZOOM_IN = 7001; public static int MENU_ZOOM_OUT = 7002; public static int MENU_MIRROR_VERTICAL = 7003; public static int MENU_MIRROR_HORIZONTAL = 7004; public static int MENU_RESIZE_CANVAS = 104; public static int MENU_COLOR_CYAN = 2000; public static int MENU_COLOR_MAGENTA = 2001; public static int MENU_COLOR_RED = 2002; public static int MENU_COLOR_BLUE = 2003; public static int MENU_COLOR_YELLOW = 2004; public static int MENU_COLOR_GREEN = 2005; public static int MENU_COLOR_ORANGE = 2006; public static int MENU_COLOR_WHITE = 2007; public static int MENU_COLOR_LIGHT_GRAY = 2008; public static int MENU_COLOR_GRAY = 2009; public static int MENU_COLOR_BLACK = 2010; public static int MENU_COLOR_DARK_GRAY = 2011; public static int MENU_COLOR_PINK = 2012; public static int MENU_UNDO = 2013; public static int MENU_REDO = 2014; public static int MENU_CROP = 2015; public static int MENU_CHECK_WATERMARK = 2016; public static int MENU_REMOVE_WATERMARK = 2017; public static int MENU_SAVE = 2018; public static int MENU_ADD_WATERMARK = 2019; public static int MENU_OPEN = 2020; public static int MENU_OPEN_LATEST = 2021; public static int MENU_SAVE_AS = 2022; public static int MENU_PRINT = 2023; public static int MENU_PRINT_SETUP = 2024; public static int MENU_EXPORT = 2025; public static int MENU_SIMPLEDRAW_ASSISTANT = 2026; public static int MENU_CUT = 2027; public static int MENU_PASTE_SPECIAL = 2028; public static int MENU_COPY = 2030; public static int MENU_PASTE = 2031; public static int MENU_IMAGE_ATTRIBUTES = 2032; public static int MENU_BRUSH = 3001; public static int MENU_ERASER = 3002; public static int MENU_BRUSH_LARGE = 3003; public static int MENU_PICK_COLOR = 3004; public static int MENU_RECTANGLE = 3005; public static int MENU_ELLIPSE = 3006; public static int MENU_ARC = 3007; public static int MENU_LINE = 3008; public static int MENU_MARK = 3009; public SimpleDraw() { // Makes the application exit when the frame is closed setdefaultcloseoperation(exit_on_close); // Sets the size of the frame setsize(800,600); // Creates a new DrawArea object, sets its size adds it to the contentpane drawarea = new DrawArea(); drawarea.setpreferredsize(new Dimension(800,600)); // Create a pane which provides scollbars for the panel if needed JScrollPane jsp = new JScrollPane(drawArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); getcontentpane().add(jsp);

JMenuBar menubar = new JMenuBar( ); setmenues(menubar); setjmenubar(menubar); setvisible(true); }; // THIS IS THE ONLY METHOD THAT YOU HAVE TO MODIFY private void setmenues(jmenubar menubar) { // Temporary menu so that all menues have some place JMenu jm = new JMenu("Trash"); JMenu file = new JMenu("File"); JMenu image = new JMenu("Image"); JMenu edit = new JMenu("Edit"); JMenu help = new JMenu("Help"); JMenu tools = new JMenu("Tools") ; JMenu color = new JMenu("Color") ; JMenu watermark = new JMenu("Watermark"); color.add(drawarea.getmenu(menu_color_black)); color.add(drawarea.getmenu(menu_color_white)); color.addseparator(); color.add(drawarea.getmenu(menu_color_red)); color.add(drawarea.getmenu(menu_color_orange)); color.add(drawarea.getmenu(menu_color_yellow)); color.add(drawarea.getmenu(menu_color_green)); color.add(drawarea.getmenu(menu_color_cyan)); color.add(drawarea.getmenu(menu_color_blue)); color.add(drawarea.getmenu(menu_color_magenta)); color.add(drawarea.getmenu(menu_color_pink)); color.addseparator(); color.add(drawarea.getmenu(menu_color_light_gray)); color.add(drawarea.getmenu(menu_color_gray)); color.add(drawarea.getmenu(menu_color_dark_gray)); tools.add(drawarea.getmenu(menu_brush)); tools.add(drawarea.getmenu(menu_brush_large)); tools.add(drawarea.getmenu(menu_pick_color)); tools.add(drawarea.getmenu(menu_eraser)); tools.addseparator(); tools.add(drawarea.getmenu(menu_mark)); tools.add(drawarea.getmenu(menu_crop)); tools.addseparator(); tools.add(drawarea.getmenu(menu_line)); tools.add(drawarea.getmenu(menu_rectangle)); tools.add(drawarea.getmenu(menu_ellipse)); tools.add(drawarea.getmenu(menu_arc)); image.add(drawarea.getmenu(menu_zoom_in)); image.add(drawarea.getmenu(menu_zoom_out)); image.addseparator(); image.add(drawarea.getmenu(menu_mirror_horizontal) ); image.add(drawarea.getmenu(menu_mirror_vertical)); image.addseparator(); image.add(drawarea.getmenu(menu_blur)); // Riktig blur image.addseparator(); image.add(drawarea.getmenu(menu_resize_canvas)); image.add(drawarea.getmenu(menu_clear_canvas)); image.addseparator(); watermark.add(drawarea.getmenu(menu_add_watermark)); watermark.add(drawarea.getmenu(menu_check_watermark)); watermark.add(drawarea.getmenu(menu_remove_watermark)); edit.add(drawarea.getmenu(menu_undo)); edit.add(drawarea.getmenu(menu_redo)); edit.addseparator(); edit.add(drawarea.getmenu(menu_cut)); edit.add(drawarea.getmenu(menu_copy));

edit.add(drawarea.getmenu(menu_paste)); edit.add(drawarea.getmenu(menu_paste_special)); file.add(drawarea.getmenu(menu_open)); file.add(drawarea.getmenu(menu_open_latest)); file.addseparator(); file.add(drawarea.getmenu(menu_save)); file.add(drawarea.getmenu(menu_save_as)); file.addseparator(); file.add(drawarea.getmenu(menu_print_setup)); file.add(drawarea.getmenu(menu_print)); file.addseparator(); file.add(drawarea.getmenu(menu_export)); file.addseparator(); file.add(drawarea.getmenu(menu_quit)); help.add(drawarea.getmenu(menu_help)); help.add(drawarea.getmenu(menu_simpledraw_assistant)); help.addseparator(); help.add(drawarea.getmenu(menu_about)); help.add(drawarea.getmenu(menu_update)); help.add(drawarea.getmenu(menu_register)); menubar.add(file); menubar.add(edit); menubar.add(image); menubar.add(tools); menubar.add(color); menubar.add(help); image.add(watermark); }; static public void main(string argv[]) { }; }; SimpleDraw simpledraw = new SimpleDraw(); Vem gjorde vad: Niklas sorterade, grupperade och placerade funktionerna. Jenny - sorterade, grupperade och placerade funktionerna. Skapade rapporten (denna sidan). Johan kodade Java. Evelina, Marie och Mia kodade Java