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

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

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

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

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

Week 10: Graphical User Interfaces

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

8. Το μοντέλο συμβάντων του AWT

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

Week 12: GUIs with Swing

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

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

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

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

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

ΓΡΑΦΙΚΕΣ ΔΙΕΠΑΦΕΣ ΧΡΗΣΤΗ- SWING (1)

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

Το επόμενο σχήμα εμφανίζει την ιεραρχία των GUI-components κλάσεων μαζί με κάποιες επιπλέον συμπληρωματικές κλάσεις που διαχειρίζονται ένα GUI.

9. Η βιβλιοθήκη Components του AWT

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βιοϊατρική τεχνολογία

Δομημένος Προγραμματισμός

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

8.1 Top-Level Swing Containers και Swing Components

ημιουργία Γραφικού Περιβάλλοντος

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

8.1 Γενικά για το AWT (Abstract Window Toolkit)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Τοπικές vs Καθολικές Μεταβλητές ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

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

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

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Πλήρες Εγχειρίδιο της Java 6, Cadenhead,

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

Μεταγλωττιστές. Ενότητα 3: Τυπικές γλώσσες (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΣΧΕΔΙΟ ΣΤΟΝ Η/Υ. Ενότητα 5: Εντολή Array. Παπαδόπουλος Χρήστος Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

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

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

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

Πληροφορική. Εργαστηριακή Ενότητα 2 η : Το βιβλίο εργασίας του MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

7. Ανάπτυξη GUI σε Java

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΓΩΓΗΣ - ΡΟΜΠΟΤΙΚΗ

Μεταγλωττιστές. Ενότητα 4: Τυπικές γλώσσες (Μέρος 3 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Χρήση εργαλείων Εικόνων, Εντολών και Ετικετών ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

Υπολογιστικά Συστήματα

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

Πληροφορική. Εργαστηριακή Ενότητα 5 η : Μαθηματικοί Τύποι. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Ηλεκτρονικοί Υπολογιστές

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Τεχνικό Σχέδιο - CAD

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΜΑΘΗΜΑ: ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Transcript:

Ειδικά Θέματα Προγραμματισμού Ενότητα 7: Abstract Window Toolkit (AWT) Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

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

Abstract Window Toolkit (AWT)

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

Περιεχόμενα ενότητας (1/6) Abstract Window Toolkit (AWT). Components & Containers. Ιεραρχική διάταξη components-containers. Label. Button. TextField. 6

Περιεχόμενα ενότητας (2/6) TextArea. Choice. Checkbox. List. Container. Panel. 7

Περιεχόμενα ενότητας (3/6) ScrollPane. Layouts. FlowLayout. BorderLayout. GridLayout. Event Classes. 8

Περιεχόμενα ενότητας (4/6) Ιεραρχία EventClasses. KeyEvent. MouseEvent. ItemEvent. Ακροατές γεγονότων. Μερικές μέθοδοι καταχώρησης ακροατών γεγονότων. 9

Περιεχόμενα ενότητας (5/6) Adapter Classes. Ιεραρχική δομή Listener interfaces. Interface KeyListener. Interface MouseListener. Interface MouseMotionListener. Interface ActionListener. 10

Περιεχόμενα ενότητας (6/6) Interface TextListener. Interface ItemListener. Παράδειγμα δήλωσης (χωρίς τη χρήση inline κλάσεων-διαχειριστών). Inline κλάσεις-διαχειριστές. Παράδειγμα δήλωσης inline κλάσεων-διαχειριστών. 11

Abstract Window Toolkit Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και λειτουργία ενός γραφικού περιβάλλοντος εργασίας. Είδη κλάσεων του πακέτου AWT: 1. Components: Κλάσεις δημιουργίας γραφικών εργαλείων (κουμπιά, πεδία εισαγωγής κειμένου, λίστες κλπ). 2. Event classes: Κλάσεις που παρέχουν πληροφορίες σχετικές με γεγονότα (κίνηση ποντικιού, πάτημα πλήκτρων). 3. Event listeners: Ακροατές γεγονότων. Περιέχουν μεθόδους που εκτελούνται κάθε φορά που εμφανίζεται το γεγονός που εκπροσωπούν. 12

Components & Containers Components: Στοιχεία που προσδίδουν σε μια εφαρμογή τη λειτουργικότητα ενός graphical user interface (πχ buttons, textfields, checkboxes). Containers: Κατηγορία components τα οποία εμπεριέχουν components στην περιοχή τους και τα διατάσσουν βάσει καθορισμένων προτύπων διάταξης (layouts). Ένα container μπορεί να περιέχει και containers στην επιφάνειά του. 13

Ιεραρχική διάταξη componentscontainers Σχήμα 1. Ιεραρχική διάταξη components-containers, πηγή: διδάσκων (2015). 14

Label (1/3) Σχήμα 2. Label, πηγή: διδάσκων (2015). 15

Label (2/3) Απεικονίζει μη τροποποιήσιμο κείμενο. Κατασκευαστές: Label ( ); Label ( String labelcontent ); 16

Label (3/3) Κατασκευαστές (Συνέχεια): Label ( String labelcontent, int alignment ); labelcontent: Το μη τροποοποιήσιμο string του label. alignment: η στοιχιση του string στο διαθέσιμο για το label διάστημα. Σταθερές: LEFT, RIGHT, CENTER. 17

Button (1/3) Σχήμα 3. Button, πηγή: διδάσκων (2015). 18

Button (2/3) Εκτελούν κώδικα όταν επιλεγούν με mouse click. Κατασκευαστές: Button ( ); Button ( String buttonlabel ); 19

Button (3/3) Μέθοδοι: void setlabel ( String buttonlabel ); String getlabel ( ); 20

TextField (1/3) Σχήμα 4. TextField, πηγή: διδάσκων (2015). 21

TextField (2/3) Component για την εισαγωγή strings από το χρήστη Εάν είναι μη τροποποιήσιμα από το χρήστη απλώς απεικονίζουν string output. Κατασκευαστές: TextField ( ); TextField ( int columns ); TextField ( String text ); TextField ( String text, int columns ); 22

TextField (3/3) Μέθοδοι: void settext ( String text ); 23

TextArea (1/4) Σχήμα 5. TextArea, πηγή: ο διδάσκων (2015). 24

TextArea (2/4) TextField πολλαπλών γραμμών. Κατασκευαστές: TextArea ( ); TextArea ( String text ); TextArea ( String text, int rows, int columns ); 25

TextArea (3/4) Κατασκευαστές (Συνέχεια): TextArea ( String text, int rows, int columns, int scrollbars ); String text: αρχικά παρουσιαζόμενο κείμενο. Int rows: κατακόρυφο μέγεθος σε γραμμές. Int columns: οριζόντιο μέγεθος σε χαρακτήρες. Int scrollbars: SCROLLBARS_BOTH, SCROLLBARS_HORIZONTAL_ONLY, SCROLLBARS_NONE SCROLLBARS_VERTICAL_ONLY. 26

TextArea (4/4) Μέθοδοι. void append ( String str ). 27

Choice (1/4) Σχήμα 6. Choice, πηγή: διδάσκων (2015). 28

Choice (2/4) Λίστα στοιχείων από τα οποία ο χρήστης επιλέγει μόνο ένα. Κατασκευαστής. Choice( ); 29

Choice (3/4) Μέθοδοι: void add(string str): Προσθήκη επιλογής με το Label str. void remove(int position): Αφαιρεί το στοιχείο που βρίσκεται στη θέση position. void remove(string str): Ομοίως, βάσει του ονόματος του στοιχείου. void select(string str): Επιλέγει το στοιχείο με το όνομα str. 30

Choice (4/4) Μέθοδοι (Συνέχεια): int getselectedindex( ): Επιστρέφει το δείκτη του επιλεγέντος στοιχείου. String getselecteditem( ): Επιστρέφει το όνομα του επιλεγέντος στοιχείου. String getitem(int index): Επιστρέφει το όνομα του στοιχείου με δείκτη index. 31

Checkbox (1/3) Σχήμα 7. Checkbox, πηγή: ο διδάσκων (2015). 32

Checkbox (2/3) Boolean component. Χρησιμοποιείται για την ενεργοποίηση ή απενεργοποίηση μιας λειτουργίας. Κατασκευαστές: Checkbox ( ); Checkbox ( String label, boolean state). Checkbox ( String label, boolean state, CheckboxGroup group). 33

Checkbox (3/3) Μέθοδοι: boolean getstate ( ). void setstate ( boolean state ); String getlabel ( ); void setlabel ( String str ); 34

List (1/6) Σχήμα 8. List, πηγή: διδάσκων (2015). 35

List (2/6) Προσφέρει την επιλογή ενός η περισσοτέρων στοιχείων. Κατασκευαστές: List ( ); List ( int rows ). List ( int rows, boolean multiplemode). 36

List (3/6) Μέθοδοι: void add ( String itemname). Προσθέτει επιλογή με το όνομα itemname. void add ( String itemname, int index). Προσθέτει επιλογή με την ετικέτα itemname στη θέση με δείκτη index. 37

Μέθοδοι (συνέχεια): List (4/6) void remove ( String itemname ). Αφαιρεί την επιλογή με την ονομασία itemname. void remove ( int position). Αφαιρεί την επιλογή της θέσης με δείκτη position. 38

Μέθοδοι (συνέχεια): List (5/6) String getselecteditem ( ). Επιστρέφει το String της επιλογής του χρήστη. String [ ] getselecteditem ( ). Επιστρέφει array με τα Strings της επιλογής του χρήστη. 39

Μέθοδοι (συνέχεια): List (6/6) int getselectedindex ( ). Επιστρέφει το δείκτη του επιλεγέντος στοιχείου. int[ ] getselectedindexes ( ). Επιστρέφει array με τους δείκτες των επιλεγόμενων στοιχείων. 40

Container (1/2) Σχήμα 9. Container, πηγή: διδάσκων (2015). 41

Container (2/2) Αντικείμενα που παρέχουν διάστημα για την τοποθέτηση components. Η προσθήκη ενός component στη γραφική επιφάνεια ενός container γίνεται με τη χρήση της μεθόδου add(); container.add(component, extra arguments); Η add δέχεται επιπλέον ορίσματα ανάλογα με τον τρόπο διευθέτησης των components (layout) που έχει επιλεγεί για το τρέχον container. 42

Panel (1/2) Σχήμα 10. Panel, πηγή: διδάσκων (2015). 43

Panel (2/2) Η βασική κλάση Container. Κατασκευαστές: Panel( ). Panel( LayoutManager layout): Αρχικοποιεί το Panel και διατάσσει τα προστιθέμενα components σύμφωνα με το δοθέν layout (βλ. Layouts). Η κλάση Applet είναι υποκλάση της Panel συνεπώς μπορεί να καλέσει τις μεθόδους που περιλαμβάνονται σε ένα container. 44

ScrollPane (1/2) Σχήμα 11. ScrollPane, πηγή: διδάσκων (2015). 45

ScrollPane (2/2) Container το οποίο μπορεί να εμφανίσει οριζόντια και κατακόρυφη γραμμή κύλισης σε περίπτωση που τα προστιθέμενα components δε χωράνε στην επιφάνειά του. Κατασκευαστές: ScrollPane( ); ScrollPane( int scrollbardisplaypolicy ); scrollbardisplaypolicy: καθορίζει κανόνες εμφάνισης γραμμών κύλισης (Σταθερές: SCROLLBARS_ALWAYS, SCROLLBARS_AS_NEEDED, SCROLLBARS_NEVER). 46

Layouts Προτυποποιημένα templates διάταξης των στοιχείων μέσα σε ένα container. Καθορίζουν τη θέση των Components και των containers πάνω στη διαθέσιμη γραφική επιφάνεια του φιλοξενούντος container. Το Layout ενός container καθορίζεται μέσω της μεθόδου: public final void setlayout( LayoutManager layout ); που ορίζεται σε όλες τις κλάσεις-containers. 47

FlowLayout (1/2) Σχήμα 12. FlowLayout, πηγή: διδάσκων (2015). 48

FlowLayout (2/2) Σχήμα 13. Screenshot Flowlayout. Διατάσσει τα προστιθέμενα components σειριακά. Είναι το default Layout. Κατασκευαστής: o FlowLayout(); Προσθήκη component σε container με FlowLayout: o container.add(component); 49

BorderLayout (1/2) Σχήμα 14. BorderLayout, πηγή: διδάσκων (2015). 50

BorderLayout (2/2) Σχήμα 15. Προσανατολισμοί BorderLayout. Περιλαμβάνει πέντε προσανατολισμούς: North, South, West, East, Center. Κατασκευαστής: o BorderLayout(); Προσθήκη component σε container με BorderLayout: o Container.add( Orientation,component); 51

GridLayout (1/2) Σχήμα 16. GridLayout, πηγή: διδάσκων (2015). 52

GridLayout (2/2) Σχήμα 17. Screen shot GridLayout. Διαχωρίζει τη διαθέσιμη επιφάνεια σε ισομερείς ορθογώνιες περιοχές. o GridLayout(int rows,int columns); Προσθήκη component comp σε Container con με GridLayout: o container.add(component); Τα components τοποθετούνται σε σειρά από αριστερά προς τα δεξιά και από επάνω προς τα κάτω. 53

Event Classes Κλάσεις που εκπροσωπούν γεγονότα. Για κάθε τύπο event ορίζεται και διαφορετική κλάση. Πχ events σχετικά με το πληκτρολόγιο και events σχετικά με το ποντίκι εκπροσωπούνται από διαφορετικές κλάσεις. Κάθε event class περιλαμβάνει τις κατάλληλες μεθόδους για τον προσδιορισμό χαρακτηριστικών που περιγράφουν το γεγονός. Π.χ. μέσω της κλάσης MouseEvent μπορούμε να βρούμε σε ποιο σημείο μιας επιφάνειας ο χρήστης έκανε mouse click και μέσω της κλάσης KeyEvent ποιο κουμπί του πληκτρολογίου πατήθηκε. Κάθε component παράγει συγκεκριμένα events. 54

Ιεραρχία EventClasses Σχήμα 18. Ιεραρχία EventClasses, πηγή: διδάσκων (2015). 55

KeyEvent (1/2) Σχήμα 19. KeyEvent, πηγή: διδάσκων (2015). 56

KeyEvent (2/2) Παράγεται από όλα τα components. Μέθοδοι: char getkeychar( ): Επιστρέφει το χαρακτήρα που αντιστοιχεί στο πλήκτρο που πατήθηκε. Μόνο για κουμπιά που αντιστοιχούν σε χαρακτήρες. Int getkeycode( ): Επιστρέφει τον κωδικό (VK) του πλήκτρου που πατήθηκε (Οι virtual codes των πλήκτρων ορίζονται ως σταθερές-μέλη στην κλάση KeyEvent). String getkeytext( ): Επιστρέφει ως string το όνομα του πλήκτρου που πατήθηκε. Περιλαμβάνονται και τα πλήκτρα ελέγχου, πχ για το function key F1 επιστρέφει F1 ; 57

MouseEvent (1/2) Σχήμα 20. MouseEvent, πηγή: διδάσκων (2015). 58

MouseEvent (2/2) Παράγεται από όλα τα components. Μέθοδοι: int getbutton( ): Επιστρέφει τον κωδικό του πλήκτρου του ποντικιού που πατήθηκε. Επιστρεφόμενες σταθερές: BUTTON_1,BUTTON_2,BUTTON_3. int getx( ): Επιστρέφει τη συντεταγμένη X του component όπου προκλήθηκε το MouseEvent. int gety( ): Επιστρέφει τη συντεταγμένη Y του component όπου προκλήθηκε το MouseEvent. 59

ItemEvent (1/2) Σχήμα 21. ItemEvent, πηγή: διδάσκων (2015). 60

ItemEvent (2/2) Παράγεται κατά την επιλογή ενός στοιχείου σε Checkboxes, Lists, Choices. Μέθοδος. int getstatechange( ): Επιστρέφει τιμή εξαρτώμενη από την αλλαγή κατάστασης σε επιλογές. Επιστρεφόμενες σταθερές: SELECTED, DESELECTED. 61

Ακροατές γεγονότων (1/2) Κλάσεις που αναλαμβάνουν τη διαχείριση των γεγονότων. Κάθε κλάση ειδικεύεται στη διαχείριση συγκεκριμένου γεγονότος. Πχ KeyEvent ή ActionEvent. Κάθε κλάση, ανάλογα με τα γεγονός που διαχειρίζεται, υλοποιεί και ένα αντίστοιχο interface. Πχ. κλάση που διαχειρίζεται MouseEvents υλοποιεί το interface MouseListener. 62

Ακροατές γεγονότων (2/2) Σε κάθε component ή container αντιστοιχίζουμε διαχειριστή γεγονότων μέσω μεθόδων καταχώρησης ακροατών γεγονότων. Πχ addmouselistener(mouselistener e). Σε κάθε component (Button, TextField, List κλπ) μπορεί να ανατεθεί ακροατής ο οποίος διαχειρίζεται ένα κοινό για τα components γεγονός με διαφορετικό τρόπο σε κάθε περίπτωση. 63

Μερικές μέθοδοι καταχώρησης ακροατών γεγονότων (1/2) void addkeylistener( interface KeyListener ). Περιέχεται σε όλα τα components-containers. void addmouselistener( interface MouseListener ). Περιέχεται σε όλα τα components-containers. void addmousemotionlistener( interface MouseMotionListener ). Περιέχεται σε όλα τα components-containers. 64

Μερικές μέθοδοι καταχώρησης ακροατών γεγονότων (2/2) void addactionlistener( interface ActionListener ). Περιέχεται στα components: Button, TextField, List. void addtextlistener( interface TextListener ). Περιέχεται στα components: TextField, TextArea. void additemlistener( interface ItemListener ). Περιέχεται στα components: Checkbox, Choice, List. 65

Adapter Classes AdapterClasses: Προϋπάρχουσες κλάσεις που περιέχουν όλες τις συναρτήσεις ενος event listener interface με κενό σώμα. Ο προγραμματισής, αντί να ορίσει εκ του μηδενός μια κλάση ακροατή και να ορίσει ολες τις μεθόδους του αντίστοιχου interface, παρακάμπτει τις μεθόδους της adapter κλάσης. Πχ η κλάση MouseAdapter περιέχει όλες τις μεθόδους- με κενό σώμα - που απαιτούνται ώστε μια κλάση να υλοποιεί το interface mouselistener. 66

Ιεραρχική δομή Listener Interfaces Σχήμα 22. Ιεραρχική δομή Listener Interfaces, πηγή: διδάσκων (2015). 67

Interface KeyListener (1/3) Σχήμα 23. Interface KeyListener, πηγή: διδάσκων (2015). 68

Interface KeyListener (2/3) Κλάσεις-διαχειριστές που το υλοποιούν διαχειρίζονται KeyEvents. Μέθοδοι. void keytyped ( KeyEvent e ). Εκτελείται όποτε ο χρήστης πατά ένα πλήκτρο. void keypressed ( KeyEvent e ). Εκτελείται όποτε ο χρήστης πιέζει ένα πλήκτρο. 69

Interface KeyListener (3/3) Μέθοδοι (Συνέχεια). void keyreleased ( KeyEvent e ). Εκτελείται όποτε ο χρήστης αφήνει ένα πλήκτρο. AdapterClass: KeyAdapter. 70

Interface MouseListener (1/4) Σχήμα 24. Interface MouseListener, πηγή: διδάσκων (2015). 71

Interface MouseListener (2/4) Υλοποιείται από κλάσεις που διαχειρίζονται Mouse Clicks. Μέθοδοι. void mouseclicked( MouseEvent e ). Εκτελείται όταν πατηθεί πλήκτρο του mouse στην επιφάνεια του τρέχοντος component. void mouseentered( MouseEvent e ). Εκτελείται όταν ο δείκτης του mouse εισέλθει στην επιφάνεια του τρέχοντος component. 72

Interface MouseListener (3/4) Μέθοδοι (Συνέχεια). void mouseexited( MouseEvent e). Εκτελείται όταν ο δείκτης του mouse εξέλθει από την επιφάνεια του τρέχοντος component. void mousepressed( MouseEvent e ). Εκτελείται όταν πιεστεί πλήκτρο του mouse στην επιφάνεια του τρέχοντος component. 73

Interface MouseListener (4/4) Μέθοδοι (Συνέχεια). void mousereleased( MouseEvent e ). Εκτελείται όταν πλήκτρο του mouse στην επιφάνεια του τρέχονταο component. Adapter κλάση. MouseAdapter. 74

Interface MouseMotionListener (1/3) Σχήμα 25. Interface MouseMotionListener, πηγή: διδάσκων (2015). 75

Interface MouseMotionListener (2/3) Υλοποιείται από κλάσεις που διαχειρίζονται γεγονότα κίνησης ποντικιού. Μέθοδοι. void mousedragged( MouseEvent e ). Εκτελείται όποτε μετακινείται ο δείκτης του ποντικιού στην επιφάνεια του τρέχοντος component με πιεσμένο ένα από τα πλήκτρα του. void MouseMoved( MouseEvent e ). Εκτελείται όποτε μετακινείται ο δείκτης του ποντικιού στην επιφάνεια του τρέχοντος component χωρίς πιεσμένο πλήκτρο. 76

Interface MouseMotionListener (3/3) Adapter κλάση. MouseMotionAdapter. 77

Interface ActionListener (1/3) Σχήμα 26. Interface ActionListener, πηγή: διδάσκων (2015). 78

Interface ActionListener (2/3) Υλοποιείται από κλάσεις που διαχειρίζονται ActionEvents. Ορισμένα ActionEvents. mouse click σε Button. πάτημα Enter σε TextField. πάτημα Enter ή διπλό Mouse click σε List item. 79

Interface ActionListener (3/3) Μέθοδοι. void actionperformed(actionevent e): Εκτελείται όποτε εμφανίζεται action event στο τρέχον component. AdapterClass. Δεν ορίζεται, εφόσον το interface περιέχει μόνο μία μέθοδο. 80

Interface TextListener (1/2) Σχήμα 27. Interface TextListener, πηγή: διδάσκων (2015). 81

Interface TextListener (2/2) Υλοποιείται από κλάσεις που διαχειρίζονται γεγονότα αλλαγής κειμένου. Μέθοδοι: void textvaluechanged( TextEvent e ). Εκτελείται όποτε μεταβάλλεται το κείμενο που εμπεριέχεται στο τρέχον component. Adapter Class: Δεν ορίζεται, εφόσον το interface περιέχει μόνο μία μέθοδο. 82

Interface ItemListener (1/2) Σχήμα 28. Interface ItemListener, πηγή: διδάσκων (2015). 83

Interface ItemListener (2/2) Υλοποιείται από μεθόδους που διαχειρίζονται αλλαγές σε Components με επιλογές όπως Choices, CheckBoxes, Lists. Μέθοδοι. void itemstatechanged(itemevent e): Εκτελείται όποτε μεταβάλλεται η κατάσταση του τρέχοντος component. Adapter κλάση. Δεν ορίζεται εφόσον το interface περιέχει μία μέθοδο προς υλοποίηση. 84

Παράδειγμα δήλωσης (χωρίς τη χρήση inline κλάσεων-διαχειριστών) 85

Inline κλάσεις-διαχειριστές (1/2) Oι διαχειριστές γεγονότων μπορούν να αρχικοποιούνται on the fly στο όρισμα των καταχωρητών τους σε components όταν οι τελευταίοι καλούνται. Έτσι γίνεται εύκολα κατανοητή η αντιστοίχηση των ακροατών γεγονότων στα components και διακρίνουμε ευκολότερα ποιος κώδικας εκτελείται σε κάθε component κατά την εμφάνιση ενός event. 86

Inline κλάσεις-διαχειριστές (2/2) Τυπική δομή καταχώρησης μιας inline κλάσης-διαχειριστή: 87

Παράδειγμα δήλωσης inline κλάσεων-διαχειριστών 88

Βιβλιογραφία 1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 2. Απόλυτη Java, Savitch, Εκδόσεις ΙΩΝ, 2008. 3. Πλήρες εγχειρίδιο της Java 6, Lemay Cadenhead, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007. 89

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