Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών Java Applets Βελώνης Γεώργιος – Καθηγητής Πληροφορικής ΠΕ20 Σχολ. Έτος 2015-16
Περιεχόμενα Τι είναι ένα applet HelloWord applet Φόρτωμα ενός applet Εμφάνιση γραφικών στα Applets Παραδείγματα
Τι είναι ένα applet Ένα applet (μικροεφαρμογή) είναι ένας ειδικός τύπος προγράμματος που ενσωματώνεται στην ιστοσελίδα για να δημιουργήσει δυναμικό περιεχόμενο. Τρέχει μέσα στο πρόγραμμα περιήγησης (browser) που λειτουργεί σαν αποδέκτης του applet (applet container) και λειτουργεί στην πλευρά του προγράμματος – πελάτη (client). Τα applets βασίζονται στις κλάσεις java.applet.Applet και javax.swing.JApplet. Η τελευταία έχει default layout manager το Flowlayout. Για λόγους ασφαλείας τα applets έχουν συνήθως αυστηρούς περιορισμούς στη πρόσβαση πόρων ενός συστήματος. Συγκεκριμένα, δε μπορούν να διαβάσουν από τον τοπικό δίσκο του client ή να γράψουν σε αυτόν αλλά ούτε και να ανοίξουν άλλα connections, περά από τον webserver.
HelloWord applet Παράδειγμα: import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint (Graphics g) g.drawString ("Hello World", 25, 50); }
Φόρτωμα ενός applet Όπως προαναφέραμε, ένα applet εκτελείται σε ένα Web browser με αποτέλεσμα να μη ξεκινά άμεσα πληκτρολογώντας μία εντολή. Αντ’ αυτού πρέπει να δημιουργήσετε ένα αρχείο HTML που θα λέει στον browser τι να φορτώσει και πώς να το εκτελέσει. Για παράδειγμα: <HTML> <HEAD> <TITLE>Java Applet</TITLE> </HEAD> <BODY> <APPLET CODE= "ΗelloWorld.class" WIDTH=100 HEIGHT=50 ALIGN=center> </APPLET> </BODY> </HTML>
Φόρτωμα ενός applet Ένας 2ος τρόπος να εκτελέσουμε ένα applet, έξω όμως από το browser, είναι η εντολή appletviwer. Η εντολή εκτελείται σε περιβάλλον γραμμής εντολών και έχει την παρακάτω σύνταξη: appletviwer html_file
Φόρτωμα ενός applet Οι περισσότεροι browsers, για λόγους ασφαλείας, δε φορτώνουν άμεσα τα applets αλλά περιμένουν από το χρήστη να κάνει μία επιπλέον ενέργεια για την ενεργοποίησή τους, όπως βλέπετε και στη διπλανή εικόνα.
Φόρτωμα ενός applet Μέσω του πίνακα ελέγχου των Windows, ο χρήστης μπορεί να ρυθμίσει το επίπεδο ασφαλείας του πίνακα ελέγχου της Java (Java Control Panel). Στην έκδοση 8 έχει αφαιρεθεί το μεσαίο (Medium) επίπεδο ασφαλείας και υπάρχει μόνο το High και Very High.
Κύκλος ζωής ενός Applet Τέσσερις μέθοδοι στην java.applet.Applet θα σας δώσουν το πλαίσιο στο οποίο θα οικοδομήσετε οποιοδήποτε σοβαρό applet: public void init( ): Αυτή η μέθοδος προορίζεται για οποιαδήποτε προετοιμασία χρειάζεται για το applet σας. Καλείται μετά τις param ετικέτες μέσα στην ετικέτα applet που έχει υποβληθεί σε επεξεργασία. public void start( ): Αυτή η μέθοδος καλείται αυτόματα μετά από την κλήση της μεθόδου init από τον browser. Καλείται επίσης, κάθε φορά που ο χρήστης επιστρέφει στη σελίδα που περιέχει το applet μετά από την περιήγησή του σε άλλες σελίδες.
Κύκλος ζωής ενός Applet public void stop( ): Αυτή η μέθοδος καλείται αυτόματα όταν ο χρήστης μετακινείται από μια σελίδα που βρίσκεται το applet. Μπορεί, επομένως, να κληθεί κατ ' επανάληψη στο ίδιο applet. public void destroy( ): Αυτή η μέθοδος καλείται μόνο όταν το πρόγραμμα περιήγησης κλείνει κανονικά. Επειδή τα applets είναι προορισμένοι να «ζουν» σε μια σελίδα HTML, δε θα πρέπει αυτή κανονικά να αφήσει πίσω της τους πόρους όταν ο χρήστης αφήσει τη σελίδα που περιέχει το applet.
Κύκλος ζωής ενός Applet
Κύκλος ζωής ενός Applet Η java.awt.Component κλάση περιέχει μία μόνο μέθοδο κύκλου ζωής του applet. public void paint(Graphics g): Καλείται αμέσως μετά την μέθοδο start( ), καθώς και κάθε φορά που το applet πρέπει να επανασχεδιάσει τον εαυτό του στο browser.
Κύκλος ζωής ενός Applet Φόρτωμα και έναρξη ενός Java Applet
Εμφάνιση γραφικών στα Applets Η java.awt.Graphics κλάση παρέχει πολλές μεθόδους για προγραμματισμό με γραφικά. Οι πιο συνηθισμένες είναι οι παρακάτω: public abstract void drawString(String str, int x, int y): χρησιμοποιείται για να σχεδιάσει την καθορισμένη συμβολοσειρά. public void drawRect(int x, int y, int width, int height): σχεδιάζει ένα ορθογώνιο με το καθορισμένο πλάτος και ύψος. public abstract void fillRect(int x, int y, int width, int height): χρησιμοποιείται για να γεμίσει ένα ορθογώνιο με το προεπιλεγμένο χρώμα και καθορίζεται το πλάτος και το ύψος του.
Εμφάνιση γραφικών στα Applets public abstract void drawOval(int x, int y, int width, int height): χρησιμοποιείται για να σχεδιάσει ένα οβάλ με το καθορισμένο πλάτος και ύψος. public abstract void fillOval(int x, int y, int width, int height): χρησιμοποιείται για να γεμίσει ένα οβάλ με το προεπιλεγμένο χρώμα και καθορίζει το πλάτος και το ύψος του. public abstract void drawLine(int x1, int y1, int x2, int y2): χρησιμοποιείται για να σχεδιάσει μία γραμμή μεταξύ των σημείων (x1, y1) και (x2, y2). public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer): χρησιμοποιείται για να σχεδιάσει την καθορισμένη εικόνα.
Εμφάνιση γραφικών στα Applets public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle): χρησιμοποιείται για να σχεδιάσει ένα κυκλικό ή ελλειπτικό τόξο. public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle): χρησιμοποιείται για να γεμίσει ένα κυκλικό ή ελλειπτικό τόξο. public abstract void setColor(Color c): χρησιμοποιείται για να ρυθμίσει το τρέχον χρώμα των γραφικών με το καθορισμένο χρώμα. public abstract void setFont(Font font): χρησιμοποιείται για να ρυθμίσει την τρέχουσα γραμματοσειρά των γραφικών με την καθορισμένη γραμματοσειρά.
Παραδείγματα Παράδειγμα 1 import java.applet.Applet; import java.awt.*; // Color, Font, Graphics public class HelloApplet extends Applet { public void paint(Graphics g) { setBackground(Color.YELLOW); g.setColor(Color.RED); g.setFont(new Font("Arial",Font.BOLD | Font.ITALIC,50)); g.drawString("Hello world!!!", 25, 70); }
Παραδείγματα Παράδειγμα 1 συνέχεια <!DOCTYPE HTML> <html> <head> <title>Hello World - Applet</title> </head> <body> <h1>My first Java applet:</h1> <applet code="HelloApplet.class" width="400" height="120" alt="Error loading applet!!!"> </applet> </body> </html>
Παραδείγματα Παράδειγμα 2 import java.applet.Applet; import java.awt.*; public class SimpleApplet extends Applet{ String text = "I'm a simple applet"; public void init() { text = "I'm a simple applet"; setBackground(Color.cyan); } public void start() { System.out.println("starting..."); public void stop() { System.out.println("stopping...");
Παραδείγματα Παράδειγμα 2 συνέχεια public void destroy() { System.out.println("preparing to unload..."); } public void paint(Graphics g){ System.out.println("Paint"); g.setColor(Color.blue); g.drawRect(0, 0,getSize().width -1,getSize().height -1); g.setFont(new Font("Arial",Font.BOLD,30)); g.setColor(Color.red); g.drawString(text, 15, 25);
Πέρασμα παραμέτρων στα Applets Για το πέρασμα παραμέτρων στα applets χρησιμοποιούμε το tag <PARAM> της HTML και την μέθοδο getParameter( ) της κλάσης java.applet.Applet. Με αυτό των τρόπο μπορούμε να στείλουμε παραμέτρους στο applet χωρίς να αλλάξουμε και μεταγλωττίσουμε εκ νέου τον κώδικα.
Πέρασμα παραμέτρων στα Applets Παράδειγμα: import java.applet.*; import java.awt.*; public class MyRect extends Applet { int w,h; String sw, sh; public void init( ) { sw = getParameter("rect_height"); sh = getParameter("rect_width"); w=Integer.parseInt(sw); h=Integer.parseInt(sh); } // Εναλλακτικά w=Integer.parseInt(getParameter("rect_height"));
Πέρασμα παραμέτρων στα Applets Παράδειγμα συνέχεια: public void paint(Graphics g) { g.drawRect(10, 10, w, h); }
Πέρασμα παραμέτρων στα Applets Παράδειγμα συνέχεια: <!DOCTYPE HTML> <html> <head> <title>My Rect - Applet</title> </head> <body> <h1>My Recangle Java applet:</h1> <applet code="MyRect.class" width="150" height="150"> <param name="rect_height" value="40"> <param name="rect_width" value="60"> </applet> </body> </html>
Πηγές http://www.tml.tkk.fi/Opinnot/Tik-110.551/1997/Java- Security.html http://www.tutorialspoint.com/java/java_applet_basics.htm http://hajsoftutorial.com/simple-animation-another- example/ http://www.javatpoint.com/java-applet http://www.oracle.com Εισαγωγή στην Java 2 – Γεώργιος Λιακέας