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

Post on 27-Sep-2020

3 views 0 download

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

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

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

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

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

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

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

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

2

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

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

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

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

3

Applets και Γραφικά

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

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

5

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

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

appletviewer).

6

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

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

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

7

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

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

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

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

8

Applets (1/2)

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

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

9

Applets (2/2)

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

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

10

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

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

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

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

11

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

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

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

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

12

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

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

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

13

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

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

14

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

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

15

Applets και HTML

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

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

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

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

16

Εκτέλεση applets

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

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

• appletviewer MyApplet.html.

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

17

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

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

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

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

</APPLET>.

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

– String getParameter(String paremeterName).

18

Γραφικά στη Java

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

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

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

19

Βασικές μέθοδοι σχεδιασμού της κλάσης 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

Χρώματα

• Δυνατότητα αλλαγής χρωμάτων των σχημάτων (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

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

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

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

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

22

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

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

• Απλή: Font.PLAIN.

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

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

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

23

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

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

24

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

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

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

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

25

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

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

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

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

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

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

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

26

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

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

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

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

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

27

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

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

28

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

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

29

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

30

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

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

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

32

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

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

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

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

33

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