ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα...

34
Ειδικά Θέματα Προγραμματισμού Ενότητα 5: Applets και Γραφικά Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Transcript of ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα...

Page 1: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

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

Ενότητα 5: Applets και Γραφικά

Μιχάλας Άγγελος

Τμήμα Μηχανικών Πληροφορικής ΤΕ

Page 2: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Άδειες Χρήσης

• Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

• Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

2

Page 3: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Χρηματοδότηση • Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα

πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.

• Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού.

• Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

3

Page 4: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Applets και Γραφικά

Page 5: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Σκοποί ενότητας

• Σε αυτή την παρουσίαση θα ασχοληθούμε με τα Applets. Λόγω του γεγονότος ότι το μάθημα απευθύνεται άτομα με κάποια εμπειρία στον προγραμματισμό, κάποια θέματα του βιβλίου θεωρούνται γνωστά κι έχουν παραληφθεί στην παρουσίαση.

5

Page 6: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Περιεχόμενα ενότητας (1/3)

• Applets. • Περιορισμοί των applets. • Βασικές μέθοδοι των applets. • Κύκλος εκτέλεσης applets (με χρήση του

appletviewer).

6

Page 7: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Περιεχόμενα ενότητας (2/3)

• Applets και HyperText Markup Language (HTML).

• Εκτέλεση applets. • Παράμετροι στα applets. • Γραφικά στη Java.

7

Page 8: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Περιεχόμενα ενότητας (3/3)

• Βασικές μέθοδοι σχεδιασμού της κλάσης Graphics.

• Χρώματα. • Γραμματοσειρές. • Μέθοδοι της κλάσης Font. • Μέθοδοι των applets κληρονομούμενες από

υπερκλάσεις. • Παράδειγμα.

8

Page 9: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Applets (1/2)

• Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού περιβάλλοντος χειρισμού (GUI).

• Σε αντίθεση με αυτόνομες εφαρμογές δεν περιέχουν μια κύρια συνάρτηση (main) αλλά περιέχουν συναρτήσεις που εκτελούνται σε καθορισμένα συμβάντα και εκτελούν τον κώδικα που ορίζει ο χρήστης μέσα στην καθεμιά.

9

Page 10: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Applets (2/2)

• Για τη δημιουργία ενός applet δημιουργούμε μια υποκλάση της προκαθορισμένης κλάσης Applet.

• Απαιτείται η προσάρτηση του πακέτου java.applet.Applet στον πηγαίο κώδικα. – import java.applet.Applet;

10

Page 11: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Περιορισμοί των applets

• Δε μπορούν να διαβάσουν ή να γράψουν στο σύστημα αρχείων του χρήστη.

• Επικοινωνούν μόνο με τον server στον οποίο έχουν αποθηκευθεί.

• Δε μπορούν να εκτελέσουν προγράμματα στο σταθμό του χρήστη.

11

Page 12: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Βασικές μέθοδοι των applets (1/3)

• public void init( ): Καλείται αυτόματα στην πρώτη εκτέλεση του applet. Εδώ ο προγραμματιστής επιτελεί τις όποιες αρχικοποιήσεις.

• public void start( ): Εκτελείται αυτόματα μετά από την init( ) καθώς και ύστερα από κάθε επαναφορά του appletviewer στο προσκήνιο.

• public void stop( ): Ο κώδικάς της εκτελείται αυτόματα κατά τη μετάβαση του appletviewer στο background.

12

Page 13: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Βασικές μέθοδοι των applets (2/3)

• public void destroy( ): Εκτελείται αυτόματα κατά την παύση της εκτέλεσης του applet (κλείσιμο του browser ή του appletviewer). Σπανίως χρησιμοποιείται.

• public void paint (Graphics graph): εκτελείται αυτόματα μετά από τη start(). Εδώ εισάγεται από τον προγραμματιστή κώδικας σχεδίασης. (Απαιτείται η προσθήκη του πακέτου java.awt.Graphics). Η paint εκτελείται επίσης όταν ο προγραμματιστής δίνει εντολή επανασχεδιασμού του γραφικού περιβάλλοντος με τη συνάρτηση repaint ( ).

13

Page 14: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Βασικές μέθοδοι των applets (3/3)

• Ο προγραμματιστής καθορίζει σε κάθε μέθοδο τον αντίστοιχο κώδικα που θα εκτελείται όποτε καλείται η καθεμιά, δηλαδή παρακάμπτει (override) τις συναρτήσεις που έχουν οριστεί στην υπερκλάση java.applet.Applet.

14

Page 15: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Κύκλος εκτέλεσης applets (με χρήση appletviewer*)

*Ορισμένοι web browsers αγνοούν τις συναρτήσεις start( ) και stop( ) κατά τη μεταφορά τους στο προσκήνιο και στο παρασκήνιο και εκτελούν μόνο τη συνάρτηση paint( ) κατά την επαναφορά τους στο προσκήνιο.

15

Page 16: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Applets και HTML

• Όλα τα applets εκτελούνται μέσω ιστοσελίδων οι οποίες περιέχουν αναφορά στον κώδικά τους: <APPLET CODE=“AppletCode.class” HEIGHT=XX WIDTH=YY></APPLET>.

• CODE: Το όνομα του μεταγλωττισμένου αρχείου .class του applet.

• HEIGHT: ύψος του παραθύρου του applet σε pixels.

• WIDTH: πλάτος του παραθύρου του applet σε pixels.

16

Page 17: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Εκτέλεση applets

• Δύο τρόποι εκτέλεσης:

– Μέσω του appletviewer στο command prompt:

• appletviewer MyApplet.html.

– Μέσω web browsers (InternetExplorer, Mozilla, Netscape) ανοίγοντας το αντίστοιχο αρχείο HTML.

17

Page 18: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Παράμετροι στα applets

• Σε ένα applet μπορούν να μεταβιβαστούν παράμετροι που ορίζονται στον κώδικα της ιστοσελίδας του:

<APPLET CODE=“appletFile.class” WIDTH=XX HEIGHT=YY>

<PARAMETER NAME=“someParameterName” VALUE=“someValue”>

</APPLET>.

• Αποθήκευση της τιμής παραμέτρου σε μεταβλητή string εντός του applet:

– String getParameter(String paremeterName).

18

Page 19: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Γραφικά στη Java

• Ο σχεδιασμός γραφικών αντικειμένων υλοποιείται μέσω της κλάσης Graphics (απαιτείται η προσθήκη του πακέτου java.awt.Graphics).

• Ένα αντικείμενο της κλάσης Graphics περιέχει μεθόδους για το σχεδιασμό γραμμών και βασικών σχημάτων.

• Στα applets, οι εντολές σχεδιασμού γραφικών αντικειμένων τοποθετούνται στη συνάρτηση paint.

19

Page 20: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Βασικές μέθοδοι σχεδιασμού της κλάσης Graphics

• Σχεδίαση γραμμής: void drawLine (int x1, int

y1, int x2, int y2);

• Σχεδίαση string: void drawString (String str,

int x_pos,int y_pos);

• Σχεδίαση ορθογωνίου: void drawRect (int x1,int

y1,int x2,int y2);

Σύστημα συντεταγμένων ενός applet:

o Θετικές τιμές του x προς τα δεξιά.

o Θετικές τιμές του y προς τα κάτω.

Σχήμα 1. Σύστημα συντεταγμένων applet, πηγή: διδάσκων (2015).

20

Page 21: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Χρώματα

• Δυνατότητα αλλαγής χρωμάτων των σχημάτων (foreground) και του φόντου μέσω της κλάσης Color (πακέτο java.awt.Color).

• Κατασκευαστής της κλάσης Color: Color(int r, int g, int b);.

• r, g, b: χρωματικές συνιστώσες κόκκινου, πράσινου και μπλε αντίστοιχα:

0 ≤ r, g, b ≤ 255.

• Προκαθορισμένα βασικά χρώματα π.χ. Color.red, Color.blue, Color.gray κλπ..

21

Page 22: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Γραμματοσειρές (1/3)

• Εκπροσωπούνται από αντικείμενα της κλάσης Font (πακέτο java.awt.Font).

• Κατασκευαστής: – Font (String name,int style, int size).

• String name: όνομα γραμματοσειράς (case insensitive). – πχ “TimesRoman”,”Arial”.

22

Page 23: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Γραμματοσειρές (2/3)

• int style: Στυλ γραμματοσειράς. – Στο πακέτο Font έχουν προκαθοριστεί σταθερές:

• Απλή: Font.PLAIN.

• Έντονη: Font.BOLD.

• Πλάγια: Font.ITALIC.

• Έντονη πλάγια: Font.BOLD | Font.ITALIC.

23

Page 24: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Γραμματοσειρές (3/3)

• int size : μέγεθος γραμματοσειράς.

24

Page 25: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Μέθοδοι της κλάσης Font (1/2)

• getName( ); – Επιστρέφει το όνομα της γραμματοσειράς.

• getStyle( ); – Επιστρέφει το στύλ της γραμματοσειράς.

• getSize( ); – Επιστρέφει το μέγεθος της γραμματοσειράς.

25

Page 26: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Μέθοδοι της κλάσης Font (2/2)

• Bool isPlain( ); – Επιστρέφει true αν το στυλ της γραμματοσειράς

είναι plain, διαφορετικά επιστρέφει false.

• Bool isBold( ); – Επιστρέφει true αν το στυλ της γραμματοσειράς

είναι bold, διαφορετικά επιστρέφει false.

• Bool isItalic ( ); – Επιστρέφει true αν το στυλ της γραμματοσειράς

είναι italic, διαφορετικά επιστρέφει false.

26

Page 27: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Μέθοδοι των applets κληρονομούμενες από υπερκλάσεις (1/3)

Σχήμα 2. Μέθοδοι των applets κληρονομούμενες από υπερκλάσεις, πηγή: διδάσκων (2015).

• Η κλάση applet, όντας υποκλάση άλλων προκαθορισμένων κλάσεων της Java, κληρονομεί μεθόδους τους.

• Ο προγραμματιστής μπορεί να συμπεριλάβει στα applets του μεθόδους υπερκλάσεων, με σκοπό τη δημιουργία ενός γραφικού περιβάλλοντος (GUI). (Περισσότερα στη διάλεξη “Abstract Windowing Toolkit”).

• Μεταξύ των μεθόδων συμπεριλαμβάνονται και συναρτήσεις αλλαγής χρωμάτων, καθορισμού γραμματοσειρών κλπ..

27

Page 28: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Μέθοδοι των applets κληρονομούμενες από υπερκλάσεις (2/3)

• Ορισμός χρωμάτων προσκηνίου και φόντου: – void setForeground(Color c); – void setBackGround(Color c); – Color getForeground( ); – Color getBackground( );

28

Page 29: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Μέθοδοι των applets κληρονομούμενες από υπερκλάσεις (3/3)

• Ορισμός γραμματοσειρών: – public void setFont ( Font f ); – public Font getFont ( );

29

Page 30: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Παράδειγμα HelloSomeoneApplet.java

30

Page 31: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

HelloSomeone.Html αρχείο που καλεί την applet

<HTML><HEAD><TITLE>Applet Alignement </TITLE></HEAD> <BODY> <P> <APPLET CODE=”HelloAgainApplet.class” CODEBASE=”classes” WIDTH=300 HEIGHT=70 ALIGN= LEFT VSPACE=60 HSPACE 10> <PARAM NAME=name VALUE=”Bonzo”> Hello to whoever you are </APPLET> To the left of this paragraph is an applet of a small string. <BR CLEAR = ALL> <P> In the next part of this page, we demonstrate …… </BODY> </HTML>

31

Page 32: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Αποτέλεσμα στον Web Browser του HelloSomeone.Html

Σχήμα 3. Αποτέλεσμα στον Web Browser του HelloSomeone.Html, πηγή: διδάσκων (2015).

32

Page 33: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Βιβλιογραφία

1. “Java προγραμματισμός”, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ..

2. “Απόλυτη Java”, Savitch, Εκδόσεις ΙΩΝ, 2008.

3. “Πλήρες εγχειρίδιο της Java 6”, Lemay Cadenhead, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007.

33

Page 34: ιικά έμανα Προραμμανισμού · java.awt.Graphics). •Ένα ανֿικείμενο ֿης κλάσης Graphics περιέχει μεθόδο׀ς για ֿο

Τέλος Ενότητας