Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΜΙΚΡΟΕΦΑΡΜΟΓΕΣ (APPLETS)

Σχετικά έγγραφα
Αντικειμενοστραφής Προγραμματισμός

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

ηµιουργία ιαλογικών Προγραµµάτων για το Web

6.1 Εισαγωγή. 6.2 Ασφάλεια

Ειδικά Θέματα Προγραμματισμού

Αντικειµενοστρεφής Προγραµµατισµός

Υποστηρικτικό υλικό Σημειώσεις

Προγραµµατισµός ΙΙ Java 2

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στη γλώσσα προγραμματισμού Java 69

Γενικά (για τις γραπτές εξετάσεις)

Μικροεφαρμογές (Applets)

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Create Sprite at Runtime

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 η Εργασία

5. Τα βασικά των Applets στην Java

6. Εξαιρέσεις στη γλώσσα Java

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

10. Εισαγωγή στα Java Applets

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ GUI AWT ΚΑΙ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

(2) Thread Thread. Runnable. ( ) Java. Sample91. Thread Thread ) Thread. Runnable. run() / run() Runnnale ( ) MyRun implements Runnable Runnable

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

άσκηση Hide UI Elements 7.2 Try and Catch

Το παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2007 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

2.1 Αντικειµενοστρεφής προγραµµατισµός

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Ανάπτυξη Plugins για το AgentSheets

ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΟ ΜΑΘΗΜΑ "ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ" ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ιδάσκων: Β.Βεσκούκης

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Εισαγωγή στον Προγ/μό Η/Υ

Αντικειμενοστρεφής Προγραμματισμός

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

8. Μέθοδοι (Methods)

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Προγραμματισμός Διαδικτύου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Οντοκεντρικός Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

java.awt Font Γραµµατοσειρές Color Χρώµατα

Αντικειμενοστρεφής Προγραμματισμός

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Από τη UML στον Κώδικα. Μέρος Α

Οντοκεντρικός Προγραμματισμός

Κλάσεις και Αντικείµενα

Εισαγωγη στην html. Η δομή μιας ιστοσελίδας (αρχείο html) Η βασική δομή ενός αρχείου html είναι η εξής: <html> <head>

Εισαγωγή στον Προγραμματισμό

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

9.1 JFC Swing. 9.1 JFC Swing Java (GUI) Java. Java Foundation Classes (JFC) Swing GUI. JFC Card Pile GameFrame GUI

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Δημιουργία μιας εφαρμογής Java με το NetBeans

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους

3D FLASH ANIMATOR (3DFA)

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #17

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

Τελικό τεστ - απαντήσεις

Ειδικά Θέματα Προγραμματισμού

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Transcript:

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΜΙΚΡΟΕΦΑΡΜΟΓΕΣ (APPLETS) ΕΙΣΑΓΩΓΗ ΣΤΑ APPLETS Ένα applet είναι ένα πρόγραμμα Java που τρέχει σε ένα πρόγραμμα περιήγησης στο Web (web browser). Ένα applet μπορεί να είναι μια πλήρως λειτουργική εφαρμογή Java, διότι έχει όλο το Java API στη διάθεσή του και κατά την κατασκευή του ο προγραμματιστής μπορεί να χρησιμοποιήσει όλο το ΑΡΙ. Υπάρχουν όμως και μερικές σημαντικές διαφορές μεταξύ ενός applet και μια αυτόνομης εφαρμογής Java (standalone java application). Οι σπουδαιότερες διαφορές είναι οι εξής: 1

ΔΙΑΦΟΡΕΣ APPLETS ΚΑΙ STANDALONE (1/2) Ένα applet είναι μία Java class που κάνει extend (δηλαδή κληρονομεί) την java.applet.applet class. Δεν καλείται ποτέ η μέθοδος main() σε ένα applet και ως εκ τούτου δεν υπάρχει κώδικας της main(). Τα Applets έχουν σχεδιαστεί με τέτοιο τρόπο ώστε να ενσωματώνονται μέσα σε μια σελίδα HTML. Όταν ένας χρήστης προβάλλει μια σελίδα HTML που περιέχει ένα applet, ο κώδικας για το applet κατεβαίνει στον υπολογιστή του χρήστη και τρέχει από εκεί. Χρειάζεται μία Java Virtual Machine (JVM) για να δούμε το applet. Η JVM μπορεί είτε να είναι ένα plug-in του Web browser είτε ένα εντελώς ξεχωριστό περιβάλλον εκτέλεσης προγραμμάτων. ΔΙΑΦΟΡΕΣ APPLETS ΚΑΙ STANDALONE (2/2) Η JVM στο μηχάνημα του χρήστη δημιουργεί ένα στιγμιότυπο της κλάσης applet και μπορεί να καλέσει διάφορες μεθόδους κατά τη διάρκεια της ζωής του applet. Τα Applets έχουν αυστηρούς κανόνες ασφαλείας που επιβάλλονται από το Web Browser. Η ασφάλεια ενός applet συχνά αναφέρεται και ως ασφάλεια sandbox, συγκρίνοντας το applet με ένα παιδί που παίζει σε ένα sandbox με διάφορους κανόνες που πρέπει να ακολουθούνται. Εάν τα applets για να τρέξουν χρειάζονται και άλλες κλάσεις τότε όλες μαζί και μαζί με το applet μπορούν να κατεβούν σε ένα Java Archive (JAR) αρχείο. 2

Διάρκεια Ζωής ενός Applet (1/2) Πέντε μέθοδοι είναι ότι μας δίνει η Applet class με βάση τις οποίες μπορούμε να δημιουργήσουμε και να λειτουργήσουμε ένα applet: init: Αυτή η μέθοδος προορίζεται για ό, τι προετοιμασία χρειάζεται να γίνει πριν την εκτέλεση του applet. start: Αυτή η μέθοδος καλείται αυτόματα αμέσως μόλις το πρόγραμμα περιήγησης καλεί τη μέθοδο init. Καλείται, επίσης, κάθε φορά που ο χρήστης επιστρέφει στη σελίδα που περιέχει το applet αφού πάει σε άλλες σελίδες. stop: Αυτή η μέθοδος καλείται αυτόματα όταν ο χρήστης φύγει από τη σελίδα στην οποία βρίσκεται η μικροεφαρμογή. Μπορεί, επομένως, να κληθεί επανειλημμένα στο ίδιο applet. Διάρκεια Ζωής ενός Applet (2/2) destroy: Αυτή η μέθοδος καλείται μόνο όταν το πρόγραμμα περιήγησης κλείσει κανονικά. Επειδή τα applets είναι προορισμένα να «ζουν» σε μια σελίδα HTML, κανονικά δεν θα πρέπει να αφήνουμε τους πόρους πίσω ανεκμετάλλευτους και δεσμευμένους όταν αφήσουμε την ιστοσελίδα που περιέχει το applet. paint: Αυτή η μέθοδος καλείται αμέσως μετά την start() και επίσης κάθε φορά που το applet χρειάζεται να κάνει render τον εαυτό του στον browser. Η μέθοδος paint() κληρονομεί την java.awt και έχει τη μορφή public void paint(graphics g). Αυτή καλείται κάθε φορά που χρειάζεται να σχεδιαστεί κάτι στην οθόνη, πχ μερική επικάλυψη παραθύρου από άλλο. Η μέθοδος paint χρησιμοποιεί ένα αντικείμενο Graphics που επιλέγουμε να το λέμε g. Η κλάση Graphics ορίζεται στο πακέτο java.awt.graphics 3

"Hello, World" Applet Το παρακάτω είναι ένα απλό applet με την ονομασία HelloWorldApplet.java: import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet public void paint (Graphics g) g.drawstring ("Hello World", 25, 50); Ιδιαίτερη προσοχή στα import: java.applet.applet. java.awt.graphics. Χωρίς αυτά, ο Java compiler δεν θα μπορούσε να αναγνωρίσει τις κλάσεις Applet και Graphics, στις οποίες αναφέρεται η applet class. Η Applet CLASS (1/2) Κάθε applet κληρονομεί την κλάση java.applet.applet class. Η βασική Applet class παρέχει όλες τις ουσιαστικές μεθόδους τις οποίες μπορεί η κληρονομούσα Applet class μπορεί να καλεί για να παίρνει πληροφορία και υπηρεσίες από το περιεχόμενο του browser. Τα παραπάνω περιέχουν μεθόδους κάνουν τα εξής Να λαμβάνουν τις παραμέτρους του applet Μπορούμε μάθουμε την τοποθεσία του δικτύου όπου το HTML αρχείο περιέχει το applet Να εκτυπώσουμε το μήνυμα της κατάστασης του browser Μπορούμε να κάνουμε λήψη μίας εικόνας Μπορούμε να κάνουμε λήψη ενός αρχείου ήχου Μπορούμε να εκτελέσουμε ένα αρχείο ήχου (δηλαδή να κάνουμε Play) Μπορούμε να αλλάξουμε το μέγεθος ενός applet (Resize applet) 4

Η Applet CLASS (2/2) Επιπροσθέτως η Applet class παρέχει μία διεπαφή (interface) με το οποίο μπορούμε να γράψουμε κώδικα για τον browser ώστε να μπορεί να λάβει πληροφορία σχετικά με την εκτέλεση του applet. Πιο συγκεκριμένα μπορούμε να: Ζητήσουμε πληροφορία σχετικά με τα εξής: (author, version, copyright) Ζητήσουμε πληροφορία σχετικά με την περιγραφή των παραμέτρων που αναγνωρίζει το applet Αρχικοποιήσουμε το applet Καταστρέψουμε το applet Αρχίσουμε την εκτέλεση του applet Σταματήσουμε την εκτέλεση του applet Η Applet class παρέχει κάποια default ανάπτυξη για καθεμία από αυτές τις μεθόδους. Αυτές οι αναπτύξεις κώδικα μπορούν να γίνουν overridden αν χρειάζεται. Πως καλούμε ένα Applet (1/2) Ένα applet μπορεί να καλεστεί μέσα από ένα HTML αρχείο και με τη χρήση ενός browser που είναι Java-enabled. Το βασικό tag που χρησιμοποιείται είναι το <applet> tag. Για το "Hello, World" applet δείτε πως γίνεται η ενσωμάτωση: <html> <title>the Hello, World Applet </title> <hr> <applet code="helloworldapplet.class" width="320" height="120">if your browser was Java-enabled, a "Hello, World"message would appear here. </applet> <hr> </html> 5

Πως καλούμε ένα Applet (2/2) Οι ιδιότητες code, width και height είναι απαραίτητες ιδιότητες και όλες πρέπει να ορίζονται. Επίσης δεν πρέπει να ξεχνάμε να κλείσουμε το applettag </applet>. Αν κάποιο applet παίρνει παραμέτρους τότε μπορούμε να χρησιμοποιήσουμε διάφορα <param> tags ανάμεσα στα tags <applet> και </applet>. Ο browser παραβλέπει το κείμενο ή άλλα tags τα οποία είναι ανάμεσα στα applet tags. Οι browsers που δεν είναι Java-enabled δεν μπορούν να επεξεργαστούν τα applet tags. Επομένως οτιδήποτε εμφανίζεται ανάμεσα στα tags <applet> και </applet> μπορεί να εμφανιστεί σε τέτοιους browsers. Εάν ένα applet βρίσκεται σε κάποιο πακέτο που δεν είναι το default, τότε την θέση που βρίσκεται αυτό το πακέτο πρέπει να την αναφέρουμε σαν ιδιότητα χρησιμοποιώντας την τελεία (.) για να διαχωρίζουμε τα διάφορα κομμάτια του πακέτου. Δείτε το εξής παράδειγμα: <applet code="mypackage.subpackage.testapplet.class" width="320" height="120"> Πως μπορούμε να πάρουμε τα Applet Parameters (1/3) Το παρακάτω παράδειγμα δείχνει πώς μπορούμε να κάνουμε ένα applet να ανταποκρίνεται σε παραμέτρους ρύθμισης που προσδιορίζονται στο HTMLαρχείο. Αυτό το applet εμφανίζει ένα μοτίβο σκακιέρας μαύρου χρώματος καθώς επίσης και ένα δεύτερο χρώμα. Αυτό το applet που ονομάζεται CheckerApplet παίρνει τις παραμέτρους στην μέθοδο init(). Μπορεί σε μερικές περιπτώσεις να παίρνει τις παραμέτρους στην paint() μέθοδο. Ο browser καλεί την init() μία φορά αμέσως μόλις φορτώσει το applet. Η default Applet.init() όμως δεν κάνει τίποτα. Μπορούμε να κάνουμε όμως Override την init() και να εισαγάγουμε τον δικό μας κώδικα εφόσον χρειάζεται. Η μέθοδος Applet.getParameter() λαμβάνει μία παράμετρο αν σε αυτή τη μέθοδο περάσουμε το όνομα της παραμέτρου (πάντα σαν συμβολοσειρά). Αν η τιμή της παραμέτρου είναι αριθμητική πρέπει να την κάνουμε parse. 6

Πως μπορούμε να πάρουμε τα Applet Parameters (2/3) import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet int squaresize = 50;// initialized to default size public void init () private void parsesquaresize (String param) private Color parsecolor (String param) public void paint (Graphics g) Πως μπορούμε να πάρουμε τα Applet Parameters public void init () (3/3) String squaresizeparam = getparameter ("squaresize"); parsesquaresize (squaresizeparam); String colorparam = getparameter ("color"); Color fg = parsecolor (colorparam); setbackground (Color.black); setforeground (fg); private void parsesquaresize (String param) if (param == null) return; try squaresize = Integer.parseInt (param); catch (Exception e) // Let default value remain 7

Γραφικά και χρώμα Το πακέτο Abstract Window Toolkit AWT, και το πακέτο swing που είναι νεώτερο του AWT και πιο πλούσιο. Με την εντολή import java.awt.*; ή import javax.swing.*; κάνω import όλων των κλάσεων του πακέτου για να είναι διαθέσιμες στο applet που έχω δημιουργήσει. Στο πακέτο awt υπάρχει η τάξη Color με την οποία ρυθμίζουμε τα χρώματα στην οθόνη. (RGB- Red,Green,Blue 0-255). Υπάρχουν και τα έτοιμα χρώματα π.χ. blue, red, white κ.λ.π. Μέθοδοι για ορισμό χρώματος στο Προσκήνιο : setforeground(color.gray) Παρασκήνιο : setbackground(color.cyan) Χρήση : g.setcolor(color.yellow) Σύστημα συντεταγμένων Η σχεδίαση ενός αντικειμένου στην οθόνη, γίνεται μέσω μεθόδων της κλάσης Graphics. Όλες οι μέθοδοι σχεδίασης παίρνουν ορίσματα που αφορούν σημεία, γωνίες ή αρχικά σημεία των αντικειμένων στο σύστημα συντεταγμένων μιας applet. Το σύστημα συντεταγμένων έχει την αρχή του (0,0) στην αριστερή άνω γωνία. Οι θετικές τιμές του x βρίσκονται στα δεξιά και οι θετικές y τιμές είναι προς τα κάτω. 8

Γεωμετρικά σχήματα Μέθοδοι για να ζωγραφίσουμε γεωμετρικά σχήματα g.drawline(x1,y1,x2,y2) -> ζωγραφίζει ένα ευθύγραμμο τμήμα από τo σημείο x1,y1 ως το σημείο x2,y2 g.drawrect(x1,y1,πλάτος, ύψος) -> Παραλληλόγραμμο g.drawoval(x1,y1,πλάτος, ύψος) -> έλλειψη g.drawarc(x1,y1,πλάτος, ύψος, αρχική γωνία, άνοιγμα γωνίας) -> Τόξο g.drawpolygon(int xpoints[],int ypoints[],int points) -> Πολύγωνο Πως εμφανίζουμε εικόνες σε applet import java.applet.*; import java.awt.*; import java.net.*; public class ImageDemo extends Applet private Image image; private AppletContext context; public void init() context = this.getappletcontext(); String imageurl = this.getparameter("image"); if(imageurl == null) try imageurl = "java.jpg"; URL url = new URL(this.getDocumentBase(), imageurl); image = context.getimage(url); catch(malformedurlexception e) e.printstacktrace(); // Display in browser status bar context.showstatus("could not load image!"); public void paint(graphics g) context.showstatus("displaying image"); g.drawimage(image, 0, 0, 200, 84, null); g.drawstring("www.javalicense.com", 35, 100); 9

Άσκηση 1 Να γράψετε ένα applet ShowColors το οποίο να τυπώνει ένα μήνυμα με πολλούς συνδυασμούς χρωμάτων. // ShowColors.java import java.awt.*; import java.applet.*; // εισαγωγή πακέτου για χρήση των applets public class ShowColors extends Applet //επεκτείνω την υπάρχουσα κλάση Applet // προσοχή το όνομα του πακέτου είναι applet ενώ // το όνομα της κλάσης που επεκτείνω είναι Applet public void init() public void paint(graphics g) for (int j=0; i<10; j++ ) // set new drawing color using integers int rc = (int)(math.random()*256); int gc = (int)(math.random()*256); int bc = (int)(math.random()*256); Color col = new Color(rc,gc,bc); g.setcolor( col ); g.drawstring( "Hello! Welcome to Java programming with applets ", 130, 30*i ); Άσκηση 2 Να γράψετε ένα applet DrawLines1 το οποίο να σχεδιάζει 10 ευθύγραμμα τμήματα όπως στο παρακάτω σχήμα. import java.awt.*; import java.applet.*; public class DrawLines1 extends Applet public void init() public void paint(graphics g) int counter = 1; while (counter<=10) g.drawline(10,10,250, counter *10); ++counter; 10

Άσκηση 3 Να γράψετε ένα applet TestPolygon το οποίο να σχεδιάζει ένα τυχαίο πεντάγωνο. import java.awt.*; import java.applet.*; public class TestPolygon extends Applet public void init() public void paint(graphics g) int xpoints[]=30,140,160,130,50; int ypoints[]=40,70,100,140,120; int points=5; g.drawpolygon(xpoints,ypoints,points); Άσκηση 4 (1/3) Δημιουργήστε ένα applet που θα προσθέτει 2 Double precision αριθμούς. Αυτό το applet θα ζητά από το χρήστη να εισάγει δύο αριθμούς κινητής υποδιαστολής (δηλαδή, τους αριθμούς με δεκαδικό σημείο, όπως 7.33, 0.0975 και 1000.12345). Η εφαρμογή να υπολογίζει το άθροισμα των τιμών και να εμφανίζει το αποτέλεσμα. Το αρχείο HTML για να φορτώσει αυτό το applet σε appletviewer είναι το παρακάτω: 1 <html> 2 <applet code = "AdditionApplet.class" width = "300" height = "65"> 3 </applet> 4 </html> 11

Άσκηση 4 (2/3) Άσκηση 4 (3/3) import java.awt.graphics; // import class Graphics import javax.swing.*; // import package javax.swing public class AdditionApplet extends JApplet double sum; // sum of values entered by user public void init() String firstnum, secnum; double number1, number2; firstnum = JOptionPane.showInputDialog( "Enter first floating-point value" ); secnum = JOptionPane.showInputDialog( "Enter second floating-point value" ); number1 = Double.parseDouble( firstnum ); number2 = Double.parseDouble( secnum ); sum = number1 + number2; public void paint( Graphics g ) super.paint( g ); g.drawrect( 15, 10, 270, 20 ); g.drawstring( "The sum is " + sum, 25, 25 ); 12

Άσκηση 5 (1/3) Δημιουργήστε ένα applet που θα χρωματίζει το background με χρώμα κυανό. Θα παίρνει τις συντεταγμένες τις οθόνης από το σύστημα και θα δημιουργεί ένα ορθογώνιο χρώματος μπλε γύρο από την οθόνη όπως φαίνεται και στο σχήμα. Στη συνέχεια θα δημιουργεί την πρόταση I m a simple applet σε χρώμα γραμματοσειράς κόκκινο. Άσκηση 5 (2/3) import java.applet.applet; import java.awt.graphics; import java.awt.color; 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..."); 13

Άσκηση 5 (3/3) public void paint(graphics g) System.out.println("Paint"); g.setcolor(color.blue); g.drawrect(0, 0, getsize().width -1, getsize().height -1); g.setcolor(color.red); g.drawstring(text, 15, 25); 14