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



Relevanta dokument
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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.

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Att använda Java SE JDK 6

Objektorienterad programmering

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

Editering, Kompilering och Exekvering av Javaprogram

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

Laboration 10 - NetBeans

2D1339 Programkonstruktion för F1, ht 2004

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

Frames, menyer och GUI-program

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

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

DD1342 Programkonstruktion för F1, ht 2007

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

Rita Egna Bilder, Timer

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

Applets med komponenter

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tentamen i Objektorienterad programmering

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Tentamen OOP

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

ID1004 Laboration 3, 5-6 November 2012

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

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

Händelsestyrda program

Övningar Dag 2 En första klass

2D1342 Programkonstruktion för F1, ht 2006

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

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

Objektorienterad programmering i Java I

Retrieve a set of frequently asked questions about digital loans and their answers

FactoryCast HMI. Premium & Quantum PLC. Applets

Klassen javax.swing.timer

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

2D4112 Datalogi I, grundkurs med Java, Labkurs 1. Godkänd Labkurs 1 ger 2p (högskolepoäng) av kursens totalt 10p

Chapter 3: Using Classes and Objects

Grundläggande programmering med C# 7,5 högskolepoäng

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Objektorienterad programmering D2

Lab5 för prgmedcl04 Grafik

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

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

Laboration 3 GUI-programmering

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

Att använda Java SE JDK 6

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

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

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

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Tentamen, EDA501 Programmering M L TM W K V

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

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

Installationsanvisning för kursens programvara på egen dator

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

Laboration 10 - Eclipse

Introduktion till arv

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Laboration 15 Grafiskt användargränssnitt

Grafiska komponenter.

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

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

Programmering för språkteknologer II, HT2014. Rum

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

Tentamen, EDAA20/EDA501 Programmering

Redovisning av inlämningsuppgifter

OOP Omtenta

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

Objektorienterad programmering i Java

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

Föreläsning 1 & 2 INTRODUKTION

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Exempel på användning av arv: Geometriska figurer

Objektorienterad programmering

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

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

SMD 134 Objektorienterad programmering

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

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

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

OOP Objekt-orienterad programmering

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Transkript:

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

Läsanvisningar Den här föreläsningen syftar till att ge en bild av vad en Java-Applet är och är ganska fristående från föregående föreläsningar. I boken finns det ett litet avsnitt om Applets och HTML, avsnitt 2.6(2.9), samt ett Appendix K (J) som innehåller en HTML-tutorial. I övrigt finns det en mängd Applet-exempel som är vitt utspridda i boken. 2

Java och Internet Stenålderns Internet Internet var på 70-talet helt text-baserat utan bilder och ljud och kördes nästan helt uteslutet på UNIX-datorer inom universitets- militär- och forskningsvärlden. Största delen utgjordes av E-MAIL samt FTP, NEWS och TELNET tjänster och var till största delen endast utbyggt i USA. Till sverige kom internet först i början på 80-talet. När WWW kom till världen År 1980 utvecklade en datakonsult vid namn Tim Berners-Lee en HTML-linkande standard åt forskare på CERN i Schweiz för att hantera gemensamma dokument som möjliggjorde länkning mellan noder i ett nätverk. Senare under åren 1989-1991 vidareutvecklande Tim och några andra dessa idéer till ett program som visade hypertext (HTML) och ett protokoll som kunde skicka sådan text över internet (HTTP). Helt plötsligt blev internet mer lättillgängligt för vanliga människor, World Wide Web hade skapats. 3

Java och Internet, forts. Från helt okänt, till del av vardag I slutet av 1993 kom det program från NCSA (Mosaic) som gjorde det möjligt att surfa på WWW bland text och bilder. Kort därefter kom Navigator från Netscape och på ett par år växte det fram en mängd internetleverantörer som gav vanliga människor möjligheter att via ett modem få tillgång till nätet och det dröjde inte länge förrän internet blev ett normalt inslag i vår vardag. Idag är det svårt att föreställa sig att WWW funnits i knappt 10 år! HTML räcker inte till! HTML är det format som information lagras i på Internet. HTML har utvecklats sedan den första, något enkla versionen, till ett idag ganska omfattande språk. Problemet är att HTML är ganska statiskt och har mycket begränsade möjligheter till interaktion med den person som surfar. Sådan interaktion kräver något mer avancerat än HTML. 4

Java och Internet, forts. Hur JAVA kom till För att göra WWW mer interaktivt krävdes det att man skulle kunna skicka program över nätet. Vidare så krävdes det av ett sådant program att det skulle fungera på olika typer av datorer och operativsystem som finns på Internet. Problemet med att skicka ett program över nätet var att de datorer som är anslutna till Internet är av varierande fabrikat och kör olika operativsystem. Den som skriver ett sådant program skulle inte i förväg kunna veta vilken typ av dator och operativsystem personerna som laddar ner programmet sitter och surfar med. Sådana program som fungerar på olika typer av datorer och operativsystem hade man inte hört talas om. Men det visade sig att Sun Microsystems redan hade utvecklat ett sådan maskinoberoende programspråk som de kallde för Oak, och de insåg att det skulle passa perfekt för Internet. Sun döpte om språket till Java och lanserade det på Internet. Netscape och Microsoft byggde snabbt in stöd för Java i sina webläsare. 5

Applet vs. Application Det finns två typer av Java-program Applications Applets En application är ett sådant program som gjordes i lab1 t.o.m. lab3 där man startar programmet med java klassnamn och är inte avsett att användas över Internet. En Applet skiljer sig från en application på ett antal sätt: Applets startas från en HTML-sida och körs i en Webb-läsare. De har vissa säkerhetsbegränsningar. T ex så kan de inte öppna filer på den dator de körs på eller starta andra program. 6

Enkelt Applet-exempel Låt oss ta ett enkelt exempel på en Application och se hur den skulle kunna se ut som en Applet. Så här kan det se ut som en Application: class ForelasApp1 { public static void main(string args[]) { System.out.println( Hello world! ); } } En Application kompilerar man ju med javac filnamn.java och startar sedan med java klassnamn. Låt oss nu se hur samma program skulle kunna se ut som en Applet och hur man skapar och startar den. 7

Applet-Exempel forts. Skapa.java fil Precis som med Applications skriver man in programmet i en text-editor (t ex notepad) och sparar som en.java fil. Vi skriver in nedanstående program och sparar som ForelasApp1.java. import java.applet.*; import java.awt.*; public class ForelasApp1 extends Applet { public void paint(graphics page) { page.drawstring("hello world!",50,25); }// method paint }// class ForelasApp1 Kompilera.java filen Sedan kompilerar man programmet med javac ForelasApp1.java så att en ForelasApp1.class fil skapas. 8

Applet-Exempel forts. (577-) Skapa.html fil och inkludera din Applet För att kunna köra sin Applet måste man skapa en.html fil som inkluderar den.class fil som skapades när man kompilerade sin Java-Applet. Skapa följande HTML-kod i Notepad och spara som ForelasApp1.html i samma katalog som.java och.class filen ligger. <HTML> <HEAD> <TITLE> En enkel Applet </TITLE> </HEAD> <BODY> Here is the output of my program: <APPLET CODE="ForelasApp1.class" WIDTH=150 HEIGHT=50> </APPLET> </BODY> </HTML> 9

Applet-Exempel forts. Starta din Applet För att köra sin Applet så öppnar man helt enkelt sin ForelasApp1.html med ett program som kan visa Applets. Det kan tex var en WWW-läsare som klarar att visa Applets (så som Netscape och Internet Explorer) eller en Applet-viewer så som den som följer med JDK (den startas med appletviewer ForelasApp1.html men den visar endast appleten, inte HTML-texten) Resultatet kommer att bli något i stil med följande: Den vänstra bilden visar exekvering via Applet viewer, den högra bilden via Internet explorer): Applets gör det möjligt att blanda text och bilder i HTML med grafik genererad av en Applet såsom t ex enkel text (som Hello World exemplet), linjer, cirklar och bilder, eller hela grafiska användargränssnitt med knappar och inmatningsfält o s v. 10

Viktiga funktioner hos en Applet se bl.a sid 673-675 (619-) En Applet har ingen main-metod som en Application har. En Applet har tre stycken speciella metoder varav minst en måste implementeras: init(...) - anropas automatiskt när en Applet första gången har lästs in i web läsaren. När appleten är inladdad helt enkelt. start(...) - anropas automatiskt efter init() när programmet skall starta, eller när man tryckt reload eller refresh. paint(...) - anropas automatiskt varje gång en applet ritas om. Kan även startas via metoden repaint() 11

Graphics-klassen Till paint()-metoden skickas automatiskt in ett objekt som parameter som är av typen Graphics. (se HelloWorld exemplet, paint(graphics page)). Genom detta Graphics-objekt kan man m h a dess metoder rita ut saker på skärmen. Tex så använde vi drawstring() i HelloWorld exemplet för att rita ut en textsträng. Man kan tänka sig ett graphics-objekt som en slags rityta där man kan presentera grafiska figurer av olika slag. Denna rityta som Graphics-objektet utgör har ett koordinatsystem. Varje punkt eller pixel på denna rityta har sin egen koordinat. När man skall rita ut något på ritytan, t ex en text m h a drawstring() så anger man alltid en position som består av ett X- och ett Y-värde (X,Y). Koordinatsystemet är utformat så att översta vänstra hörnet har koordinaterna 0,0 (X=0 och Y=0) och nedersta högra hörnet <width-1, height-1>. I vårt HelloWorld-exempel angav vi koordinaterna <150,50>. Detta innebär 0,0 149,49 12

Applet och HTML En Applet inkluderas i en HTML-sida m h a <APPLET>-taggen. Den enklaste formen på denna tag ser ut på följande sätt: <APPLET CODE=AppletSubclass.class WIDTH=anInt HEIGHT=anInt></APPLET> CODE Anger vilken.class fil som Appleten består av. WIDTH Anger bredden på appleten. HEIGHT Anger höjden på appleten 13

Parametrar till Applets (593-) HTML-tag Om man vill skicka med parametrar till sin applet, gör man det m h a en <PARAM> HTML-tag på följande sätt: <APPLET CODE=AppletSubclass.class WIDTH=anInt HEIGHT=anInt> <PARAM name="paramname" value="paramvalue"></applet> Varje parameter har ett namn som anges med name= och ett värde som anges med value=. Exempel på en parameter med namnet meddelande och värdet Hej jag heter Kalle! : <APPLET CODE="ForelasApp2.class" WIDTH=200 HEIGHT=200> <PARAM name="meddelande" value="hej jag heter Kalle!"></APPLET> Det går bra att ha flera parametrar så länge de har olika namn. 14

Parametrar till Applets, forts. Läsa av en parameter från applet För att ta reda på värdet på en parameter inne i sin applet använder man sig av getparameter(string paramname)-metoden som returnerar en sträng som utgör värdet (value) på parametern med det angivna namnet. Exempel som gör att Strängen message får värdet "Hej jag heter Kalle! ": String message = getparameter("meddelande"); Om man anger ett namn på en parameter som inte finns så får man tillbaka en tom sträng. Vi ändrar vår Applet ForelasApp1 så att den hämtar en text från htmlfilen, vi kallar den nya appleten för ForelasApp2 15

ForelasApp2.java Applet som hämtar parameter från html-fil import java.applet.*; import java.awt.*; public class ForelasApp2 extends Applet { private String medtext; // här läggs meddelande texten från html vid getparameter public void init() { //meddelande är namn på parametern i html medtext=getparameter( meddelande ); }// method init public void paint(graphics page) { page.drawstring(medtext,50,25); //här skrivs meddelandet ut }// method paint }// class ForelasApp2 16

ForelasApp2.html <HTML> <HEAD> <TITLE> En enkel Applet </TITLE> </HEAD> <BODY> Here is the output of my program: <APPLET CODE="ForelasApp2.class" WIDTH=250 HEIGHT=50> <Param name="meddelande" value="hej alla Java Applets vänner" > </APPLET> </BODY> </HTML> 17

Fler Funktioner Några exempel på fler metoder ur Applet-klassens interface: resize Ändrar storleken på appleten, sid 675 (620). stop Anropas automatiskt när appleten skall sluta exekvera. Några exempel på fler metoder ur Graphics-klassens interface: sid 252- (95- ) drawline Ritar en linje setcolor För att ändra färg, sid 255- setfont För att byta font, sid 275- Fler användbara metoder i dessa klasser hittar man om man tittar på klassernas hela interface där man kan se en lista på alla publika metoder. Java-klassernas interface kan man t ex hitta på denna www-sida: http://java.sun.com/products/jdk/1.1/docs/api/packages.html 18

En applet med font, och färg //Något om färger se sid 255- (98- ), Något om fonter se sid 275- import java.awt.*; import java.applet.*; public class AppFont extends Applet { Font f; public void init () { f=new Font("Arial", Font.ITALIC,30); //sätter fonten Arial, kursiv(italic) och storlek 30 setbackground(color.blue); //sätt bakgrundsfärgen till blå setsize(400,200); }// metoden init public void paint (Graphics g) { Color farg; g.setfont(f); farg=new Color(255,255,0); // gul g.setcolor(farg); //bredd 400, höjd 200 pixels g.drawstring("detta visar en applet",45,100); } //metoden paint } //class AppFont 19

Här är html -filen och resultat <HTML> <HEAD> <TITLE> Applet App1</TITLE> </HEAD> <BODY> En strunt applet <br> <APPLET CODE="AppFont.class" WIDTH=600 height=200> </APPLET> </BODY> </HTML> 20

Här är en applet med Checkbox import java.applet.*; import java.awt.*; import java.awt.event.*; // För händelser public class CheckboxTest extends Applet implements ItemListener{ private Checkbox check = new Checkbox("CheckboxTest"); // skapar en checkbox public void init(){ add(check); // lägger check till vår applet, gör att den ritas ut check.additemlistener(this); // addera lyssnare, this gör att den lyssnar på just denna applet } //metoden init public void itemstatechanged(itemevent e){ if(check.getstate()) else repaint(); //om status on ändra till röd, returnerar true vid on setbackground(color.red); // om status off, ändra till vit setbackground(color.white); } //metod itemstatechanged public void paint(graphics g) { g.drawstring("applet med checkbox, vid selection blir bakgrunden röd",45,100); }// metod paint } // klass CheckboxTest 21

Här är html filen för CheckboxTest <HTML> <HEAD> </HEAD> <BODY> <TITLE> Applet App1</TITLE> En strunt applet <br> <APPLET CODE="CheckboxTest.class" WIDTH=600 height=200></applet> </BODY> </HTML> 22

Flera applets Flera applets hittar du bland kursmaterialet klicka på denna bild 23