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



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

Grafiska komponenter.

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

Händelsestyrda program

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Mer om grafiska komponenter. Händelsestyrda program

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

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

Frames, menyer och GUI-program

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

Tentamen FYTA11 Javaprogrammering

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

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

5 Användargränssnitt. 5.1 AWT och Swing

Grafiska användargränssitt och händelsehantering

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

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

Programstyrd / händelsestyrd

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

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

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Klasshierarkier - repetition

Laboration 15 Grafiskt användargränssnitt

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Konstruktion av klasser med klasser

OOP Objekt-orienterad programmering

GUI Nyckelbeståndsdelar

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Att skriva till och läsa från terminalfönstret

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

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

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

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

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

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

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

Java-programmering. GUI-exempel. WindowTest.java. Händelsestyrt. WindowTestGUI.java (forts) WindowTestGUI.java. GUI UDP TCP Trådar Laboration 2 Tips

OOP Objekt-orienterad programmering

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

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

FactoryCast HMI. Premium & Quantum PLC. Applets

Fördjupad Java. Undantagshantering. Fel

Klassen javax.swing.timer

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

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

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

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

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

Lektion Händelsehanterare

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

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

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

TENTAMEN OOP

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

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

Lab5 för prgmedcl04 Grafik

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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)

Java-concept och Swing. Swing low, sweet chariot

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

Tentamen. Lösningsförslag

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

Applets med komponenter

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

TENTAMEN OOP

OOP Objekt-orienterad programmering

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

Parallellism, återblick

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

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

Programuppbyggnad från komponenter (en liten orientering)

Föreläsning 14. Filhantering

Generisk klass med typparameter Inre klass - ListIterator

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

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

Testning och felhantering

Rita Egna Bilder, Timer

GUI-program med Swing

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

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

Transkript:

Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt 2 1

Plattformberoende Utseende av GUI-komponenter varierar mellan olika plattformar byggstenen kallas Component(komponent) rektangulärt område på skärm flera olika typer av komponenter ämnade för olika användningsområde 3 Två grupper (efter användningsområde) Kontrollkomponenter Erbjuder interaktion med användaren reagerar på händelser Behållarkomponenter organiserar andra komponenter 4 2

Component Container Canvas Button List Choise Scrollbar Checkbox TextComponent Panel Window Label Applet Frame Dialog TextArea TextField FileDialog 5 6 3

7 import java.awt.*; class FrameEx5{ public static void main(string args[]){ Frame f = new Frame("Window to the World"); f.setsize(300, 400); f.setvisible(true); f.setbackground(color.black); f.setresizable(false); 8 4

import java.awt.*; class LabelEx3{ public static void main(string args[]){ Frame f = new Frame("Label example"); Label l = new Label("My first label"); f.add(l); f.pack(); f.setvisible(true); 9 10 5

11 import java.awt.*; class LayoutEx5{ public static void main(string args[]){ Frame f = new Frame("Layout example"); Label n = new Label("North"); Label s = new Label("South"); Label c = new Label("Center"); Label e = new Label("East"); Label w = new Label("West"); f.setlayout(new BorderLayout()); f.add(borderlayout.north, n); f.add("south", s); f.add(borderlayout.center, c); f.add("east", e); f.add("west", w); f.pack(); f.setvisible(true); 12 6

13 import java.awt.*; class ButtonEx3 extends Frame{ public static void main(string args[]){ ButtonEx3 f; f = new ButtonEx3(); Button b = new Button("OK..!"); f.setlayout(null); f.setsize(200, 300); b.setbounds(70, 260, 60, 20); f.add(b); f.setvisible(true); 14 7

15 import java.awt.*; class TextEx2{ public static void main(string args[]){ Frame f = new Frame("Text example"); f.setsize(400, 400); TextField tf = new TextField(10); TextArea ta = new TextArea(10, 10); Panel p1 = new Panel(); Panel p2 = new Panel(); p1.setsize(200, 200); p2.setsize(200, 200); f.setlayout(new BorderLayout()); f.add("north", p1); f.add("south", p2); p1.setlayout(null); p2.setlayout(null); tf.setbounds(100, 50, 200, 20); ta.setbounds(100, 50, 200, 100); p1.add(tf); p2.add(ta); f.setvisible(true); 16 8

Användning av ett GUI 1 main 2 3 GUI Tar emot och visar data Bearbetning av data 17 import java.awt.*; class Awtexmp1{ public static void main(string args[]){ Application app = new Application(); class Application { private GUI thegui; public Application() { thegui = new GUI(); /*ev andra metoder */ 18 9

import java.awt.*; class Demo1{ public static void main(string args[]){ Application app = new Application(); class Application { private GUI thegui; public Application() { thegui = new GUI("Demo 1"); class GUI{ private Frame f; Label l1; TextField tf; Button ok; GUI(String ftitel){ f = new Frame(ftitel); f.setsize(200, 300); f.setlayout(null); l1 = new Label("Iåur näjm, pliss"); l1.setbounds(50, 30, 100, 20); tf = new TextField(); tf.setbounds(50, 60, 100, 20); ok = new Button("OK..!"); ok.setbounds(70, 260, 60, 20); f.add(l1); f.add(tf); f.add(ok); f.setvisible(true); 19 class GUI implements ActionListener{ private Frame f; Label l1, l2; TextField tf; Button ok; GUI(String ftitel){ f = new Frame(ftitel); f.setsize(200, 300); f.setlayout(null); l1 = new Label("Iåur näjm, pliss"); l1.setbounds(50, 30, 100, 20); tf = new TextField(); tf.setbounds(50, 60, 100, 20); ok = new Button("OK..!"); ok.setbounds(70, 260, 60, 20); ok.addactionlistener(this); f.add(l1); f.add(tf); f.add(ok); f.setvisible(true); public void actionperformed(actionevent e){ if(e.getsource() == ok){ l2 = new Label("Iåur najm is: " + tf.gettext()); l2.setbounds(50, 90, 100, 20); f.add(l2); 20 10

- Händelsehantering GUI = ingen sekvens i programmets exekvering Händelsestyrd programmering Varje åtgärd av användaren genererar ett händelseobjekt Händelseobjektet tas sedan hand om av ett lyssnarobjekt 21 - Händelsehantering Superklassen Event subklasser som : FocusEvent KeyEvent MouseEvent WindowEvent ActionEvent AdjustmentEvent ItemEvent TextEvent 22 11

- Händelsehantering Ett lyssnarobjekt är ett objekt av en klass som implementerar ett Listener-inteface(mer om det senare) Det finns en ActionListener-interface med en operation ActionPerformedför att ta hand om ActionEvent-objekt TextListener > TextValueChanged > TextEvent osv... 23 import java.awt.*; import java.awt.event.*; class Demo4{ public static void main(string args[]){ Application app = new Application(); class Application{ GUI thegui; String str = "Of course Java is...: "; Application(){ thegui = new GUI(this); public String getj(checkbox c){ String ret; ret = c.getlabel(); return str + ret; public String getk(checkbox c){ String ret; ret = c.getlabel(); return str + ret + " Isn't it!?"; public String geto(checkbox c){ String ret; ret = c.getlabel(); return str + ret + ". I knew that!!!"; 24 12

class GUI implements ItemListener, ActionListener{ Frame f; Application app; Label l, opinion; Panel p; CheckboxGroup cbg; Button quit; public Checkbox k, j, o; GUI(Application app){ this.app = app; f = new Frame("Demo 2");f.setSize(400, 300);f.setLayout(null); l = new Label("Java is...?"); l.setbounds(170, 30, 60, 20); f.add(l); p = new Panel();p.setBounds(30, 50, 200, 100); p.setlayout(new GridLayout(3, 1)); cbg = new CheckboxGroup(); 25 k = new Checkbox("Fun", cbg, false);j = new Checkbox("Funnier", cbg, false); o = new Checkbox("Funniest", cbg, false); p.add("north", k);p.add("center", j); p.add("south", o); k.additemlistener(this);j.additemlistener(this); o.additemlistener(this); quit = new Button("Quit"); quit.addactionlistener(this); quit.setbounds(300, 270, 60, 20);f.add(quit); f.add(p);opinion = new Label("The answer is:"); f.add(opinion);opinion.setbounds(50, 270, 350, 20); f.setvisible(true); 26 13

public void itemstatechanged(itemevent e){ String str = null; if(e.getsource() == k){ str = app.getk(k); opinion.settext(new String(str)); else if(e.getsource()== j) { str = app.getj(j); opinion.settext(app.getj(j)); else if(e.getsource() == o) opinion.settext(app.geto(o)); 27 public void actionperformed(actionevent e){ if(e.getsource() == quit){system.exit(0); 28 14

Bortom Swing SWT SwingX Jgoodies JavaFX Apache Pivot 29 Undantasghantering Do, or do not There is no try -Yoda (The empire Strikes Back) 30 15

Undantagshändelser Alla program måste innehålla kontroller Data som programmet behandlar är riktigt Vad skall det göras (i programmet) när ett fel upptäcks? Kontroller ligger utsprida, ej samlade 31 Undantagshändelser Ett undantag (Exception) indikerar ett fel eller en ovanlig situation ett program kastas till en special sektion av kod ett undantagsobjekt genereras Detta objekt tas hand om av den metod som är bäst lämpad för ändamålet 32 16

Undantagshändelser Alla undantagsobjekt skall vara subklasser till klassen Exception Klassen har som attribut en sträng som beskriver felet Konstruktorn har denna sträng som parameter 33 Undantagshändelser Satsen thrownew genererar ett undantagsobjekt undantagsobjektet kastas från någon punkt i exekveringen och fångas av en annan try/catch kombination fångar angivet undantag 34 17

Undantagshändelser try { foo(...);... catch (Exception e){ //... 35 Undantagshändelser try { foo(...); catch(filenofoundexception){... catch(ioexception e){... catch(exception e){... 36 18

Undantagshändelser Vad händer om man inte fångar ett undantag? Finns ingen try/catch undantaget propageras till högsta metoden och är kastad från den metoden 37 Undantagshändelser try tvingar ett villkor över de satser den vakar över. Om ett undantagsobjekt genreras resterande satser exekveras ej. 38 19

Undantagshändelser class MyException extends Exception { private String word; public MyException(String s){ super( Felbeskrivningen ); word = s; //andra ev metoder 39 Undantagshändelser public void amethod(parmetrar) throws MyExecption { if(villkorsfel) throw new MyException(sträng); 40 20