610 likes | 762 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 demo’s 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)
3.3 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 packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 import javax.swing.JApplet; // importeert klasse JApplet 7 8 public class WelcomeApplet extends JApplet 9 { 10 // tekent tekst op de achtergrond van de applet 11 public void paint( Graphics g ) 12 { 13 // oproepen van de geërfde methode paint 14 super.paint( g ); 15 16 // tekent een String op x-coördinaat 10 en y-coördinaat 20 17 g.drawString( "Welcome to Java Programming!", 10, 20 ); 18 19 } // einde methode paint 20 21 } // einde klasse 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 6 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 8 public class WelcomeApplet extends JApplet 8 public class WelcomeApplet extends JApplet 9 { 10 // tekent tekst op de achtergrond van de applet 11 public void paint( Graphics g ) 12 { 13 // oproepen van de geërfde methode paint 14 super.paint( g ); 15 16 // tekent een String op x-coördinaat 10 en y-coördinaat 20 17 g.drawString( "Welcome to Java Programming!", 10, 20 ); 18 19 } // einde methode paint 20 21 } // einde klasse WelcomeApplet • De Klasse WelcomeApplet bestaat uit • Kop (header) • Body • Van openingsaccolade tot en met sluitingsaccolade • In de body staat methode paint
8 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
8 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)
8 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 elk detail van de klasse JApplet te kennen.
8 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
8 public class WelcomeApplet extendsJApplet KOP (HEADER) VAN APPLET-KLASSE • Onze klasse erft onder andere de methoden paint, init en start van JApplet • By default: init en start hebben lege body’s. • We overschrijven enkel de methode(s) die we nodig • hebben. Wij overschrijven paint in onze klasse. • Worden alle drie automatisch opgeroepen
8 public class WelcomeApplet extends JApplet 9 { 10 // tekent tekst op de achtergrond van de applet 11 public void paint( Graphics g ) 12 { 13 // oproepen van de geërfde methode paint 14 super.paint( g ); 15 16 // tekent een String op x-coördinaat 10 en y-coördinaat 20 17 g.drawString( "Welcome to Java Programming!", 10, 20 ); 18 19 } // einde methode paint 20 21 } // einde klasse 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.
11 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.
11 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 parameter, • nl. een referentie naar een object van Graphics. • het object is het uitvoerscherm waar de • tekst zal terechtkomen.
12 { 13 // oproepen van de geërfde methode paint 14 super.paint( g ); 15 16 // tekent een String op x-coördinaat 10 en y-coördinaat 20 17 g.drawString( "Welcome to Java Programming!", 10, 20 ); 18 19 } // einde 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 ;
14 super.paint( g ); 17 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.
17 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
3.4 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.9: WelcomeApplet2.java 2 // Geeft meerdere strings weer in een applet. 3 4 // Java packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 import javax.swing.JApplet; // importeert klasse JApplet 7 8 public class WelcomeApplet2 extends JApplet 9 { 10 // tekent tekst op de achtergrond van de applet 11 public void paint( Graphics g ) 12 { 13 // oproepen van de geërfde methode paint 14 super.paint( g ); 15 16 // tekent strings op verschillende locaties 17 g.drawString( "Welcome to", 25, 25 ); 28 g.drawString( "Java Programming!", 25, 40 ); 19 20 } // einde methode paint 21 22 } // einde klasse WelcomeApplet2 HET JAVA PLATFORM
(0, 0) (25, 25) (25, 40) 16 // tekent strings op verschillende locaties 17 g.drawString( "Welcome to", 25, 25 ); 18 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.11: WelcomeLines.java 2 // Geeft tekst en lijnen weer in een applet 3 4 // Java packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 import javax.swing.JApplet; // importeert klasse JApplet 7 8 public class WelcomeLines extends JApplet 9 { 10 // tekent 2 lijnen en tekst op de achtergrond van de applet 11 public void paint( Graphics g ) 12 { 13 // oproepen van de geërfde methode paint 14 super.paint( g ); 15 16 // tekent een horizontale lijn van (15, 10) naar (210, 10) 17 g.drawLine( 15, 10, 210, 10 ); 18 19 // tekent een horizontale lijn van (15, 30) naar (210, 30) 20 g.drawLine( 15, 30, 210, 30 ); 21 22 // tekent een String, tussen de lijnen, op positie (25, 25) 23 g.drawString( "Welcome to Java Programming!", 25, 25 ); 24 25 } // einde methode paint 26 27 } // einde klasse WelcomeLines HET JAVA PLATFORM
16 // tekent een horizontale lijn van (15, 10) naar (210, 10) 17 g.drawLine( 15, 10, 210, 10 ); 18 19 // tekent een horizontale lijn van (15, 30) naar (210, 30) 20 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
3.5 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.13: AdditionApplet.java 2 // Telt twee decimale cijfers op en geeft het resultaat weer. 3 4 // Java packages 5 import java.awt.Graphics; // importeert klasse Graphics 6 import javax.swing.*; // importeert package javax.swing 7 8 public class AdditionApplet extends JApplet 9 {privatedouble sum; // som van de twee ingegeven waarden 10 11 // initialisatie van de applet: waarden worden ingegeven 12 public void init() 13 { 14 String firstNumber; //1ste string,ingegeven door gebruiker 15 String secondNumber;//2de string ,ingegeven door gebruiker 16 17 double number1; // eerste getal 18 double number2; // tweede getal 19 20 // eerste getal wordt aan de gebruiker gevraagd 21 firstNumber = JOptionPane.showInputDialog( 22 "Enter first floating-point value" ); 23 24 // het tweede getal wordt aan de gebruiker gevraagd 25 secondNumber = JOptionPane.showInputDialog( 26 "Enter second floating-point value" ); 27 28 // converteert getallen van type String naar type double 29 number1 = Double.parseDouble( firstNumber ); 30 number2 = Double.parseDouble( secondNumber ); HET JAVA PLATFORM
Methode paint() 32 // het optellen van de ingegeven waarden 33 sum = number1 + number2; 34 35 } // einde init methode 36 37 // het resultaat, wordt in een rechthoek, weergegeven 38 public void paint( Graphics g ) 39 { 40 // oproepen van de geërfde methode paint 41 super.paint( g ); 42 43 // tekent een rechthoek 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 } // einde methode paint 51 52 } // einde klasse AdditionApplet HET JAVA PLATFORM 1 <html> 2 <applet code = "WelcomeLines.class"width = "300" height = "40"> 3 </applet> 4 </html>
1 // Fig. 3.13: 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 packages 5 import java.awt.Graphics; //importeert klasse Graphics 6 import javax.swing.*; // importeert package javax.swing • Lijn 5: importeer de klasse Graphics (package java.awt). • Lijn 6: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
8 public class AdditionApplet extends JApplet 8 public class AdditionApplet extends JApplet 9 { privatedouble sum; // som van de twee ingegeven waarden 10 11 // initialisatie van de applet: waarden worden ingegeven 12 public void init() 13 {… 35 } // einde methode init 36 37 // het resultaat, wordt in een rechthoek, weergegeven 38 public void paint( Graphics g ) 39 {… 50 } // einde methode paint 51 52 } // einde klasse 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
8 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
9privatedouble sum;// som van de twee ingegeven waarden • 10 • 11 // initialisatie van de applet: waarden worden ingegeven • 12 public void init() • 13 { • … • 35 } // einde methode init • 36 • 37 // het resultaat, wordt in een rechthoek, weergegeven • 38 public void paint( Graphics g ) • 39 { • … • 50 } // einde methode paint • 51 • 52 }// einde klasse AdditionApplet BODY VAN DE APPLET-KLASSE • De body bestaat uit privatedouble sum; en de methodes init en paint.
9 private double sum; // som vd twee ingegeven waarden DECLARATIE VAN ATTRIBUUT-VARIABELE • Is een declaratie van een attribuut-variabele • sum is een attribuut-variabele • wordt private gedeclareerd in de body van een klasse, niet in een methode. • private attribuut-variabelen kunnen overal in de klasse gebruikt worden, dus ook in de methoden van deze klasse. NIET buiten de klasse!!! • Variabelen gedeclareerd in methodes zijn lokale variabelen. • Kunnen enkel gebruikt worden in de body van de methode • krijgt een defaultwaarde (hier 0.0)
9 private double sum; // som vd 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. • een double neemt meer plaats in het geheugen dan een float.
11 // initialisatie van de applet: waarden worden ingegeven 12 public void init() 13 { 14 String firstNumber; //1ste string,ingegeven door gebruiker 15 String secondNumber;//2de string ,ingegeven door gebruiker 16 17 double number1; // eerste getal 18 double number2; // tweede getal 19 20 // eerste getal wordt aan de gebruiker gevraagd 21 firstNumber = JOptionPane.showInputDialog( 22 "Enter first floating-point value" ); 23 24 // het tweede getal wordt aan de gebruiker gevraagd 25 secondNumber = JOptionPane.showInputDialog( 26 "Enter second floating-point value" ); 27 28 // converteert getallen van type String naar type double 29 number1 = Double.parseDouble( firstNumber ); 30 number2 = Double.parseDouble( secondNumber ); 31 32 // het optellen van de ingegeven waarden 33 sum = number1 + number2; 34 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.
12 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.
13 { 14 String firstNumber; //1ste string,ingegeven door gebruiker 15 String secondNumber;//2de string ,ingegeven door gebruiker 17 double number1; // eerste getal 18 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 • deze variabelen 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 13 { 14 String firstNumber; //1ste string,ingegeven door gebruiker 15 String secondNumber;//2de string ,ingegeven door gebruiker 17 double number1; // eerste getal 18 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
20 // eerste getal wordt aan de gebruiker gevraagd 21 firstNumber = JOptionPane.showInputDialog( 22 "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 " )