610 likes | 744 Views
Hoofdstuk 3: Inleiding tot Java Applets. 3.1. INLEIDING. Applet is een JAVA-programma maakt deel uit van een webpagina wordt uitgevoerd door de JVM in een webbrowser of wordt uitgevoerd in de appletviewer bijna geen bestandsverwerking mogelijk. Reden: veiligheid.
E N D
3.1. INLEIDING • Applet • is een JAVA-programma • maakt deel uit van een webpagina • wordt uitgevoerd door de JVM in een webbrowser of wordt uitgevoerd in de appletviewer • bijna geen bestandsverwerking mogelijk. Reden: veiligheid.
3.2. DEMONSTRATIE APPLETS Op de site http://java.sun.com JAVA 2 Platform Standard Edition downloaden demos bekijken en/of downloaden Demos: TicTacToe Applet Drawtest Applet JAVA2D Applet
3.3 EIGEN APPLET MAKEN EN UITVOEREN: DE VERSCHILLENDE STAPPEN • De broncode van de applet intikken in een editor en bewaren met extensie .java • Compileren: broncode wordt vertaald naar bytecode. Heeft als extensie .class • Een HTML-pagina maken met een speciale code om de JAVA-applet te starten. • Webbrowser of appletviewer starten en het HTML-bestand openen • De applet wordt automatisch uitgevoerd en het resultaat zie je op het scherm.
WEBBROWSER EN APPLETVIEWER • Wanneer gebruiken we een appletviewer? • Wanneer gebruiken we een webbrowser? • Testen van een applet • Uitvoeren van een applet (gedownload of reeds uitgetest)
SIMPEL JAVA-APPLET: EEN TEKST WEERGEVEN We zullen zelf een applet creëren We willen dat de tekst Welcome to JAVA Programming ! wordt weergegeven op het scherm. • We zullen de broncode en de HTML bespreken
Inleidend commentaar Importeren van de nodige packages De applet-klasse, met daarin de methode paint() 1 // Fig. 3.6: WelcomeApplet.java 2 // Een eerste applet in Java. 3 4 // Java core packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 7 // Java extension packages 8 import javax.swing.JApplet; // importeert klasse JApplet 9 10 public class WelcomeApplet extends JApplet 11 { 12 // tekent tekst op de achtergrond van de applet 13 public void paint( Graphics g ) 14 { 15 // oproepen van de geërfde methode paint 16 super.paint( g ); 17 18 // tekent een String op x-coördinaat 10 en y-coördinaat 20 19 g.drawString( "Welcome to Java Programming!", 10, 20 ); 20 21 } // end method paint 22 23 } // end class WelcomeApplet HET JAVA PLATFORM Hello.class
// Fig. 3.6: WelcomeApplet.java • 2 // Een eerste applet in Java. INLEIDEND COMMENTAAR • Commentaar • Naam van de broncode • Beschrijving van de applet
5 import java.awt.Graphics; // importeert klasse Graphics 8 import javax.swing.JApplet; // importeert klasseJApplet IMPORTEREN VAN PACKAGES • De import-statement geeft de compiler de opdracht de applet toegang te geven tot een klasse van een package • Wanneer je een applet maakt, importeer de klasse JApplet (package javax.swing) • importeer de klasse Graphics (package java.awt). • Kan lijnen, rechthoeken, ovalen en tekst tekenen
DE APPLET-KLASSE 10 public class WelcomeApplet extends JApplet 10 public class WelcomeApplet extends JApplet 11 { 12 // tekent tekst op de achtergrond van de applet 13 public void paint( Graphics g ) 14 { 15 // oproepen van de geërfde methode paint 16 super.paint( g ); 17 18 // tekent een String op x-coördinaat 10 en y-coördinaat 20 19 g.drawString( "Welcome to Java Programming!", 10, 20 ); 20 21 } // end method paint 22 23 } // end class WelcomeApplet • De Klasse WelcomeApplet bestaat uit • Kop (header) • Body • Van openingsaccolade tot en met sluitingsaccolade • In de body staat methode paint
10 public class WelcomeApplet extendsJApplet KOP (HEADER) VAN APPLET-KLASSE • Applets hebben minstens één klasse door de programmeur gedefinieerd (= user-defined class) • We beginnen niet vanaf nul • Stukken van een bestaande klasse gebruiken. • Overerving: creëer nieuwe klassen op basis van bestaande
10 public class WelcomeApplet extendsJApplet KOP (HEADER) VAN APPLET-KLASSE • Keyword class: • we definiëren de klasse WelcomeApplet • Keyword extends: • De klasse WelcomeApplet erft de data en de methoden van JApplet • JApplet : superklasse (basisklasse) • WelcomeApplet : subklasse (afgeleide klasse)
10 public class WelcomeApplet extendsJApplet KOP (HEADER) VAN APPLET-KLASSE • Klasse JApplet betekent voor ons • Iemand anders heeft gedefinieerd “wat het betekent om een applet te zijn" • Applets hebben meer dan 200 methodes nodig! • extends JApplet • We erven methodes; we dienen ze niet allemaal zelf te definiëren • We dienen niet elke detail van de klasse JApplet te kennen.
10 public class WelcomeApplet extendsJApplet KOP (HEADER) VAN APPLET-KLASSE • Keyword public: • WelcomeApplet is beschikbaar voor alle andere • objecten, van welke packages ze ook deel uitmaken. • De appletviewer of browser creëert een object • van de klasse WelcomeApplet • De klasse moet public zijn • Bestand kan maar één public klasse hebben • De bestandsnaam = publicklassenaam
10 public class WelcomeApplet extendsJApplet KOP (HEADER) VAN APPLET-KLASSE • Onze klasse erft de methoden paint, init en start • van JApplet • By default: paint, init en start hebben lege body’s. • We overschrijven enkel de methode(s) die we nodig • hebben. Wij overschrijven paint in onze klasse. • Worden alledrie automatisch opgeroepen
10 { 11 12 // tekent tekst op de achtergrond van de applet 13 public void paint( Graphics g ) 14 { 15 // oproepen van de geërfde methode paint 16 super.paint( g ); 17 18 // tekent een String op x-coördinaat 10 en y-coördinaat 20 19 g.drawString( "Welcome to Java Programming!", 10, 20 ); 20 21 } // end method paint 22 23 }// end class WelcomeApplet BODY VAN DE APPLET-KLASSE: METHODE PAINT() • In de methode paint() staan altijd opdrachten om iets op het scherm te zetten, te ‘tekenen’. • De inhoud van paint(): zelf bepalen • kan tekst zijn, maar ook figuren.
13 public void paint( Graphics g ) KOP (HEADER) VAN METHODE PAINT() • In de kop staat de naam van de methode • in ons geval paint • voorafgegaan door de keywords public void • door public kan appletviewer of browser demethode paint oproepen. • void: de methode geeft geen resultaat terug, • wanneer de methode paint is uitgevoerd.
13 public void paint( Graphics g ) KOP (HEADER) VAN METHODE PAINT() • Na de naam van de methode staan ronde haakjes • = parameterlijst • in de parameterlijst ontvangt de methode data, • die hij nodig heeft om zijn taak te kunnen uitvoeren. • paint ontvangt automatisch de parameters, • nl. een referentie naar een object van Graphics. • het object is het uitvoerscherm waar de • tekst zal terechtkomen.
14 { 15 // oproepen van de geërfde methode paint 16 super.paint( g ); 17 18 // tekent een String op x-coördinaat 10 en y-coördinaat 20 19 g.drawString( "Welcome to Java Programming!", 10, 20 ); 20 21 } // end method paint BODY VAN DE APPLET-KLASSE: METHODE PAINT() • herhaling: • tussen beide accolades kun je zoveel JAVA-opdrachten zetten als je wilt. • een opdracht in JAVA = statement • elke statement eindigt op ;
16 super.paint( g ); 19 g.drawString( "Welcome to Java Programming!", 10, 20 ); BODY VAN DE APPLET-KLASSE: METHODE PAINT() • Methode drawString (van klasse Graphics) • De gegevens tussen de haakjes = argumenten • eerste argument: String tekenen • tweede argument: x-coördinaat • derde argument: y-coördinaat • Methode paint van de superklasse JApplet wordt opgeroepen.
19 g.drawString( "Welcome to Java Programming!", 10, 20 ); (0, 0) (10, 20) BEELDSCHERM • Beeldscherm is opgebouwd uit kleine puntjes, • zogenaamde pixels. • x • y
1 <html> 2 <applet code = "WelcomeApplet.class"width = "300" height = "40"> 3 </applet> 4 </html> HTML • Bewaren met extensie .html (WelcomeApplet.html) • naam vrij te kiezen • bewaren in dezelfde directory als de applet • HTML codes (tags) • komen meestal 2 keer voor • begint met < en eindigt met > • niet case-sensitive
1 <html> 2 <applet code = "WelcomeApplet.class"width = "300" height = "40"> 3 </applet> 4 </html> HTML • Lijn 1 en 4: begin en einde van het HTML-bestand • Lijn 2 en 3: speciale tags voor JAVA applets • appletviewer begrijpt enkel deze tags • <APPLET> heeft drie attributen: • 1. De applet die uitgevoerd dient te worden • 2/3. Grootte van het scherm
VOORBEELD 2 We willen dat de tekst Welcome to JAVA Programming ! wordt weergegeven op het scherm. • We zullen de broncode en de HTML bespreken
Inleidend commentaar Importeren van de nodige packages De applet-klasse, met daarin de methode paint() 1 <html> 2 <applet code = "WelcomeApplet2.class" width = "300" height = "60"> 3 </applet> 4 </html> 1 // Fig. 3.8: WelcomeApplet2.java 2 // Geeft meerdere strings weer in een applet. 3 4 // Java core packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 7 // Java extension packages 8 import javax.swing.JApplet; // importeert klasse JApplet 9 10 public class WelcomeApplet2 extends JApplet 11 { 12 // tekent tekst op de achtergrond van de applet 13 public void paint( Graphics g ) 14 { 15 // oproepen van de geërfde methode paint 16 super.paint( g ); 17 18 // tekent strings op verschillende locaties 19 g.drawString( "Welcome to", 25, 25 ); 20 g.drawString( "Java Programming!", 25, 40 ); 21 22 } // end method paint 23 24 } // end class WelcomeApplet2 HET JAVA PLATFORM Hello.class
(0, 0) (25, 25) (25, 40) 18 // tekent strings op verschillende locaties 19 g.drawString( "Welcome to", 25, 25 ); 20 g.drawString( "Java Programming!", 25, 40 ); METHODE drawString()
VOORBEELD 3 • We wensen twee lijnen en een tekst weer te geven op het scherm • Welcome to JAVA Programming ! • We zullen de broncode bespreken
Inleidend commentaar Importeren van de nodige packages De applet-klasse, met daarin de methode paint() 1 // Fig. 3.10: WelcomeLines.java 2 // Geeft tekst en lijnen weer in een applet 3 4 // Java core packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 7 // Java extension packages 8 import javax.swing.JApplet; // importeert klasse JApplet 9 10 public class WelcomeLines extends JApplet 11 { 12 // tekent 2 lijnen en tekst op de achtergrond van de applet 13 public void paint( Graphics g ) 14 { 15 // oproepen van de geërfde methode paint 16 super.paint( g ); 17 18 // tekent een horizontale lijn van (15, 10) naar (210, 10) 19 g.drawLine( 15, 10, 210, 10 ); 20 21 // tekent een horizontale lijn van (15, 30) naar (210, 30) 22 g.drawLine( 15, 30, 210, 30 ); 23 24 // tekent een String, tussen de lijnen, op positie (25, 25) 25 g.drawString( "Welcome to Java Programming!", 25, 25 ); 26 27 } // end method paint 28 29 } // end class WelcomeLines HET JAVA PLATFORM
18 // tekent een horizontale lijn van (15, 10) naar (210, 10) 19 g.drawLine( 15, 10, 210, 10 ); 20 21 // tekent een horizontale lijn van (15, 30) naar (210, 30) 22 g.drawLine( 15, 30, 210, 30 ); METHODE drawLine • Methode drawLine van de klasse Graphics • 4 argumenten: • x en y coördinaat van beginpunt • x en y coördinaat van eindpunt
(210,10) (15, 10) (15, 30) (210, 30) 18 // tekent een horizontale lijn van (15, 10) naar (210, 10) 19 g.drawLine( 15, 10, 210, 10 ); 20 21 // tekent een horizontale lijn van (15, 30) naar (210, 30) 22 g.drawLine( 15, 30, 210, 30 ); METHODE drawLine
VOORBEELD 4 • We wensen dat de gebruiker twee decimale getallen ingeeft. • De som wordt weergegeven op het scherm. • We zullen de broncode en de HTML bespreken
Inleidend commentaar Importeren van de nodige packages De applet-klasse, met daarin de methodes init() en paint() Methode init() 1 // Fig. 3.12: AdditionApplet.java 2 // Telt twee decimale cijfers op en geeft het resultaat weer. 3 4 // Java core packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 7 // Java extension packages 8 import javax.swing.*; // importeert package javax.swing 9 10 public class AdditionApplet extends JApplet 11 { private double sum; // som van de twee ingegeven waarden 12 13 // initialisatie van de applet: waarden worden ingegeven 14 public void init() 15 { 16 String firstNumber; //1ste string,ingegeven door gebruiker 17 String secondNumber;//2de string ,ingegeven door gebruiker 18 double number1; // eerste getal 19 double number2; // tweede getal 20 21 // eerste getal wordt aan de gebruiker gevraagd 22 firstNumber = JOptionPane.showInputDialog( 23 "Enter first floating-point value" ); 24 25 // het tweede getal wordt aan de gebruiker gevraagd 26 secondNumber = JOptionPane.showInputDialog( 27 "Enter second floating-point value" ); 28 29 // converteert getallen van type String naar type double 30 number1 = Double.parseDouble( firstNumber ); 31 number2 = Double.parseDouble( secondNumber ); HET JAVA PLATFORM
Methode paint() 33 // het optellen van de ingegeven waarden 34 sum = number1 + number2; 35 } 36 37 // het resultaat, wordt in een vierkant, weergegeven 38 public void paint( Graphics g ) 39 { 40 // oproepen van de geërfde methode paint 41 super.paint( g ); 42 43 // tekent een vierkant beginnend op pos. (15, 10) 44 // 270 pixels breed en 20 pixels hoog 45 g.drawRect( 15, 10, 270, 20 ); 46 47 // het resultaat (als String) wordt weergegeven op pos.(25, 25) 48 g.drawString( "The sum is " + sum, 25, 25 ); 49 50 } // end method paint 51 52 } // end class AdditionApplet HET JAVA PLATFORM 1 <html> 2 <applet code = "WelcomeLines.class"width = "300" height = "40"> 3 </applet> 4 </html>
1 // Fig. 3.12: AdditionApplet.java 2 // Telt twee decimale cijfers op en geeft het resultaat weer. INLEIDEND COMMENTAAR • Commentaar • Naam van de broncode • Beschrijving van de applet
IMPORTEREN VAN PACKAGES 4 // Java core packages 5 import java.awt.Graphics; //importeert klasse Graphics 6 7 // Java extension packages 8 import javax.swing.*; // importeert package javax.swing • Lijn 5: importeer de klasse Graphics (package java.awt). • Lijn 8:importeer elke klasse van de package javax.swing. • M.a.w. we geven de opdracht aan de compiler de applet toegang te geven tot elke klasse van de package javax.swing. • dit wordt gedaan met de asterisk (*) • bevat JApplet en JOptionPane • * betekent niet: compiler laadt elke klasse • Compiler laadt enkel de klassen die worden gebruikt
10 public class AdditionApplet extends JApplet 10 public class AdditionApplet extends JApplet 11 { private double sum; // som van de twee ingegeven waarden 12 13 // initialisatie van de applet: waarden worden ingegeven 14 public void init() 15 {… 35 } 36 37 // het resultaat, wordt in een vierkant, weergegeven 38 public void paint( Graphics g ) 39 {… 50 } // end method paint 51 52 } // end class AdditionApplet DE APPLET-KLASSE • De Klasse AdditionAppletbestaat uit • Kop (header) • Body • Van openingsaccolade tot en met sluitingsaccolade • In de body staan de methodes init en paint
10 public class AdditionApplet extends JApplet KOP (HEADER) VAN APPLET-KLASSE • Applets heeft minstens één klasse door deprogrammeur gedefinieerd (= user-defined class) • Klasse AdditionApplet erft van JApplet • AdditionApplet erft de methodes paint, init en start van JApplet. • Als de browser of appletviewer de applet uitvoert, dan roept ze de methode init1 keer op. • De volgorde van oproepen is steeds: init, start en paint
10 { • private double sum;// som van de twee ingegeven • // waarden • 12 • 13 // initialisatie van de applet: waarden worden ingegeven • 14 public void init() • 15 { • … • 35 } • 36 • 37 // het resultaat, wordt in een vierkant, weergegeven • 38 public void paint( Graphics g ) • 39 { • … • 50 } // end method paint • 51 • 52 }// end class AdditionApplet BODY VAN DE APPLET-KLASSE • De body bestaat uit « double sum; » en de methodes init en paint.
11 double sum; // som van de twee ingegeven waarden DECLARATIE VAN OBJECT-VARIABELE • Is een declaratie van een object-variabele • sum is een object-variabele • wordt gedeclareerd in de body van een klasse, niet in een methode. • object-variabelen kunnen overal in de klasse gebruikt worden, dus ook in de methoden van deze klasse. • Variabelen gedeclareerd in methodes zijn lokale variabelen. • Kunnen enkel gebruikt worden in de body van de methode • hebben een defaultwaarde (hier 0.0)
11 double sum; // som van de twee ingegeven waarden PRIMITIEVE TYPEN • int gehele getallen (hoofdstuk 2) • float, double decimale getallen • int, float en double zijn primitieve typen. • float heeft een nauwkeurigheid van 6 tot 7 cijfers. • double heeft een nauwkeurigheid van • 15 cijfers. • double neemt meer plaats in het geheugen dan een float.
13 // initialisatie van de applet: waarden worden ingegeven 14 public void init() 15 { 16 String firstNumber; //1ste string,ingegeven door gebruiker 17 String secondNumber;//2de string ,ingegeven door gebruiker 18 double number1; // eerste getal 19 double number2; // tweede getal 20 21 // eerste getal wordt aan de gebruiker gevraagd 22 firstNumber = JOptionPane.showInputDialog( 23 "Enter first floating-point value" ); 24 25 // het tweede getal wordt aan de gebruiker gevraagd 26 secondNumber = JOptionPane.showInputDialog( 27 "Enter second floating-point value" ); 28 29 // converteert getallen van type String naar type double 30 number1 = Double.parseDouble( firstNumber ); 31 number2 = Double.parseDouble( secondNumber ); 33 // het optellen van de ingegeven waarden 34 sum = number1 + number2; 35 } METHODE INIT() • methode init zorgt voor de initialisatie van de applet • M.a.w. init voert werkzaamheden uit die nodig zijn voordat het eigenlijke werk van de applet kan beginnen.
14 public void init() KOP (HEADER) VAN METHODE INIT() • In de kop staat de naam van de methode • in ons geval init • voorafgegaan door de keywords public void • door public kan appletviewer of browser demethode init oproepen. • void: de methode heeft geen resultaat terug, • wanneer de methode init is uitgevoerd. • De parameterlijst is leeg: init heeft niks nodig om zijn taak te kunnen uitvoeren.
15 { 16 String firstNumber; //1ste string,ingegeven door gebruiker 17 String secondNumber;//2de string ,ingegeven door gebruiker 18 double number1; // eerste getal 19 double number2; // tweede getal BODY VAN DE METHODE INIT() • Declaratie van 4 lokale variabelen: • 2 lokale string variabelen • 2 lokale variabelen van het type double • number1 en number2 krijgen geen defaultwaarde
15 { 16 String firstNumber; //1ste string,ingegeven door gebruiker 17 String secondNumber;//2de string ,ingegeven door gebruiker 18 double number1; // eerste getal 19 double number2; // tweede getal BODY VAN DE METHODE INIT() • We maken een onderscheid tussen • Referentie-variabelen (= referenties) • firstNumber en secondNumber zijn referenties • primitieve data typen variabelen (= variabelen) • number1 en number2 zijn variabelen
REFERENTIES / VARIABELEN • referenties • verwijzen naar een object (bevatten het adres waar het object in het geheugen zich bevindt) • objecten kunnen data en methodes bevatten • variabelen • kunnen slechts data (1 waarde) bevatten • afspraak: • referenties en variabelen beginnen met een kleine letter
21 // eerste getal wordt aan de gebruiker gevraagd 22 firstNumber = JOptionPane.showInputDialog( 23 "Enter first floating-point value" ); BODY VAN DE METHODE INIT() • Methode JOptionPane.showInputDialog • toont de dialoogbox en leest een string in • Inleesresultaat van showInputDialog toekennen aan firstNumber • Toekenningsstatement • = binaire operator - heeft twee operanden • Rechterlid wordt geëvalueerd en toegekend aan variabele in het linkerlid • Lees als:firstNumber krijgt de waarde van JOptionPane.showInputDialog( "Enter floating-point value " )