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

Σχετικά έγγραφα
8.1 Top-Level Swing Containers και Swing Components

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Week 10: Graphical User Interfaces

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

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

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

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

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

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

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

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

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

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

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

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

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

Week 12: GUIs with Swing

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

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

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

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

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

ΜΑΘΗΜΑ: Μεταγλωττιστές

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

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

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

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

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

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

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

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

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

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

VK -14/10/2016 Σελίς 1

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

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

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

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

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

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

Οπτικός Προγραμματισμός σε NetBeans με Java Swing

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

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

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΜΑΘΗΜΑ: Δίκτυα Υψηλών Ταχυτήτων

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

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

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

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

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

ΜΑΘΗΜΑ: Ασύρματες Κινητές Επικοινωνίες

Τηλεπικοινωνίες. Ενότητα 2.1: Ανάλυση Fourier. Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ψηφιακή Τεχνολογία σε Ακαδημαϊκό Περιβάλλον

Λειτουργικά Συστήματα

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

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

Μοντελοποίηση Λογικών Κυκλωμάτων

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

Ηλεκτρικές Μηχανές Ι. Ενότητα 2: Τριφασικοί Μετασχηματιστές. Τσιαμήτρος Δημήτριος Τμήμα Ηλεκτρολόγων Μηχανικών Τ.Ε

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

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

Αρχιτεκτονική Υπολογιστών Εργαστήριο

ΜΑΘΗΜΑ: Υπολογιστικά Νέφη

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

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

Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP

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

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

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

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

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

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

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

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

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

VK -14/10/2016 Σελίς 1

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

Transcript:

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

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

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

Java Swing

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

Περιεχόμενα ενότητας (1/3) Γραφικές διεπαφές τύπου Swing (Swing GUI). Υψηλού Επιπέδου Swing Containers και Swing Components. Η ιεραρχία των υψηλού επιπέδου Swing containers. H ιεραρχία της Jcomponent. Containers υψηλού επιπέδου. Containers γενικού σκοπού. 6

Περιεχόμενα ενότητας (2/3) Containers ειδικού σκοπού. Βασικά στοιχεία ελέγχου. Παρουσίαση μη επεξεργάσιμης πληροφορίας. Διαδραστική παρουσίαση μορφοποιημένης πληροφορίας. 7

Περιεχόμενα ενότητας (3/3) Παράδειγμα εφαρμογής Swing. Διαχειριστές Γεγονότων - Event Handlers. Τύποι γεγονότων. Swing και Thread. Η χρήση της μεθόδου invokelate. Παράδειγμα χρήσης της μεθόδου invokelater. 8

Γραφικές διεπαφές τύπου Swing (Swing GUI) Τα πακέτα που αρχίζουν με το πρόθεμα javax.swing παρέχουν ευέλικτα και ισχυρά εργαλεία ανάπτυξης GUI. Ιδιαίτερα το πακέτο javax.swing αναπτύχθηκε κυρίως λόγω των ανεπαρκειών του Abstract Windows Toolkit (AWT). Π.χ. η κλάση JButton που ορίζεται σε αυτό, υπερτερεί της AWT Button κλάσης επιτρέποντας την ύπαρξη όχι μόνο απλού κείμενου, αλλά και εικόνων στα κουμπιά. 9

Υψηλού Επιπέδου Swing Containers και Swing Components (1/2) Κάθε γραφική διεπαφή τύπου Swing πρέπει να έχει τουλάχιστον ένα top-level Swing container. Ένα top-level Swing container παρέχει την απαραίτητη υποστήριξη που χρειάζονται τα Swing components για την εμφάνισή τους και την διαχείριση των γεγονότων που αυτά παράγουν. Υπάρχουν τρία top-level Swing containers: το JFrame, το JDialog, και (για applets) το JApplet. 10

Υψηλού Επιπέδου Swing Containers και Swing Components (2/2) Κάθε JFrame αντικείμενο δημιουργεί ένα κύριο γραφικό παράθυρο, κάθε JDialog αντικείμενο δημιουργεί ένα δευτερεύον παράθυρο (δηλ. παράθυρο που εξαρτάται από κάποιο άλλο παράθυρο). Κάθε JApplet αντικείμενο δημιουργεί την περιοχή εμφάνισης ενός applet στο παράθυρο του Web Browser. 11

Η ιεραρχία των υψηλού επιπέδου Swing containers Σχήμα 1. Η ιεραρχία των υψηλού επιπέδου Swing containers, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ. 59, ανακτήθηκε 10/2013. 12

H ιεραρχία της JComponent Με εξαίρεση τα top-level containers, π.χ. το JFrame, όλα τα Swing components είναι υποκλάσεις της κλάσης JComponent. Σχήμα 2. H ιεραρχία της Jcomponent, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ. 59, ανακτήθηκε 10/2013. 13

Containers Υψηλού Επιπέδου Τα Container στην κορυφή οποιασδήποτε Swing ιεραρχίας. Σχήμα 3. Container στην κορυφή οποιασδήποτε Swing ιεραρχίας, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.60, ανακτήθηκε 10/2013. 14

Containers γενικού σκοπού Ενδιάμεσα Container που μπορούν να χρησιμοποιηθούν κάτω από πολλές διαφορετικές περιστάσεις. Σχήμα 4. Containers γενικού σκοπού, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.60, ανακτήθηκε 10/2013. 15

Containers ειδικού σκοπού Ενδιάμεσα Container που διαδραματίζουν συγκεκριμένους ρόλους σε ένα GUI. Σχήμα 5. Containers ειδικού σκοπού, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.61, ανακτήθηκε 10/2013. 16

Βασικά στοιχεία ελέγχου Ατομικά Component που υπάρχουν πρωτίστως για να πάρουν δεδομένα από το χρήστη, επίσης εν γένει παρουσιάζουν κάποια κατάσταση. Σχήμα 6. Βασικά στοιχεία ελέγχου, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.61, ανακτήθηκε 10/2013. 17

Παρουσίαση μη επεξεργάσιμης πληροφορίας Ατομικά Component που υπάρχουν απλώς για να δώσουν πληροφορίες στον χρήστη. Σχήμα 7. Παρουσίαση μη επεξεργάσιμης πληροφορίας, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.62, ανακτήθηκε 10/2013. 18

Διαδραστική παρουσίαση μορφοποιημένης πληροφορίας Ατομικά Component που εμφανίζουν πληροφορίες με συγκεκριμένη μορφοποίηση η οποία μπορεί να τροποποιηθεί από το χρήστη. Σχήμα 8. Διαδραστική παρουσίαση μορφοποιημένης πληροφορίας, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.62, ανακτήθηκε 10/2013. 19

Παράδειγμα εφαρμογής Swing (1/5) Στη συνέχεια θα παρουσιαστούν οι λειτουργίες των Swing κλάσεων μέσω ενός παραδείγματος: Jframe. Jpanel. Jbutton. Οι χρήση των υπολοίπων Swing Components είναι παρόμοια. 20

Παράδειγμα εφαρμογής Swing (2/5) Συνήθως, όταν υλοποιείται μια GUI εφαρμογή σε Swing, δημιουργούμε ένα JFrame αντικείμενο και επιλέγουμε συγκεκριμένο πλάνο ή σχέδιο (layout) για αυτό. Κατόπιν τοποθετούμε ένα ή περισσότερα JPanels στο Jframe. Τα JPanels διαθέτουν επίσης επιλογές layout όπως και τα JFrames. Στη συνέχεια, μπορούμε να προσθέτουμε και άλλα αντικείμενα τύπου Component. 21

Παράδειγμα εφαρμογής Swing (3/5) 22

Παράδειγμα εφαρμογής Swing (4/5) //Δημιουργία ενός Jframe: JFrame fr = new JFrame(); //Τοποθέτηση του pane στο Jframe: fr.setcontentpane(pane); fr.setdefaultcloseoperation(jframeexit_on_close); fr.setlocation(200, 200); fr.pack(); fr.setvisible(true); //Εμφάνιση του JFrame }} Σχήμα 9. Αποτέλεσμα εφαρμογής, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.63, ανακτήθηκε 10/2013. 23

Παράδειγμα εφαρμογής Swing (5/5) Τα JButton, JPanel και JFrame αντικείμενα διαθέτουν πολύ περισσότερες λειτουργίες από αυτές που παρουσιάστηκαν και μπορούν να χρησιμοποιηθούν. Στο απλό παράδειγμα που παρουσιάστηκε, κάνοντας κλικ στο κουμπί δεν φέρνει κανένα αποτέλεσμα, αλλά κάνοντας κλικ στο "Χ" του παραθύρου τερματίζει το πρόγραμμα. 24

Διαχειριστές Γεγονότων - Event Handlers (1/3) Για να δίνεται αποτέλεσμα κάνοντας κλικ στο κουμπί του παραπάνω παραδείγματος, χρειάζεται να προσθέσουμε στο component (JButton αντικείμενο) τον κατάλληλο ακροατή γεγονότων (ButtonListener). 25

Διαχειριστές Γεγονότων - Event Handlers (2/3) Έτσι όταν ο χρήστης πατήσει το κουμπί, ο ακροατής προκαλείται και καλούνται οι κατάλληλες μέθοδοί του (διαχειριστές γεγονότων). Η εργασία αυτή γίνεται με τον ίδιο τρόπο που ορίζονται οι ακροατές γεγονότων στα Abstract Window Toolkit (AWT) Component. 26

Διαχειριστές Γεγονότων - Event Handlers (3/3) Προσθήκη ακροατή γεγονότων για το αντικείμενο JButton : btn.addactionlistener(new ButtonListener()); static class ButtonListener implements ActionListener {public void actionperformed(actionevent e) {//Εδώ προστίθεται ο κώδικας που θα εκτελεστεί με το πάτημα του button } } 27

Τύποι γεγονότων Πίνακας 1. Ενδεικτικοί τύποι γεγονότων (events) στο Swing, πηγή: «Εισαγωγή στη γλώσσα προγραμματισμού Java», σελ.65, ανακτήθηκε 10/2013.. 28

Swing και Threads (1/4) H μετάβαση από τα AWT στα Swing GUI παρουσιάζει κάποιο μικρό πρόβλημα σε σχέση με τα Threads. Όλες οι AWT κλάσεις είναι συμβατές με τα threads (thread safe) ενώ οι swing κλάσεις δεν είναι. Μέσω των synchnonized μεθόδων η Java επιτυγχάνει τoν συγχρονισμό των threads που έχουν πρόσβαση σε κάποιο κοινό αντικείμενο. 29

Swing και Threads (2/4) Οι AWT μέθοδοι συγχρονίζονται την στιγμή της αρχικοποίησης του αντίστοιχου αντικειμένου τους στην οθόνη. Έτσι εμποδίζονται πιθανά αδιέξοδα (deadlocks) που επιφέρουν το «κρέμασμα» εφαρμογών την στιγμή της εμφάνισης γραφικών αντικείμενων (πχ. buttons, panels, κλπ) στην οθόνη. 30

Swing και Threads (3/4) Οι swing κλάσεις δεν είναι thread-safe. Ο κώδικας διαχείρισης γεγονότων στις Swing εφαρμογές εκτελείται μέσα από μια συγκεκριμένη thread η οποία ονομάζεται event-dispatching thread. Με αυτό τον τρόπο επιτυγχάνεται ο κώδικας ενός event handler να τελειώνει πριν την εκτέλεση του κώδικα ενός άλλου event handler. 31

Swing και Threads (4/4) Για την αποφυγή πιθανού αδιεξόδου (deadlock), είναι απαραίτητο και τα Swing components να δημιουργούνται, τροποποιούνται και ερωτούνται για την κατάστασή τους μέσα από την eventdispatching thread. 32

Η χρήση της μεθόδου invokelater (1/2) Η κλήση της μεθόδου invokelater μέσα από κάποιο thread ζητά από την eventdispatching thread να εκτελέσει κάποιο κώδικα. Ο συγκεκριμένος κώδικας πρέπει να γραφτεί μέσα στην μέθοδο run ενός αντικειμένου τύπου Runnable και το Runable αντικείμενο να ορισθεί ως παράμετρος της μεθόδου invokelater. 33

Η χρήση της μεθόδου invokelater (2/2) Η invokelater μέθοδος επιστρέφει αμέσως χωρίς να περιμένει την εκτέλεση του συγκεκριμένου κώδικα από την eventdispatching thread. 34

Παράδειγμα χρήσης της μεθόδου invokelater (1/3) 35

Παράδειγμα χρήσης της μεθόδου invokelater (2/3) Στη συνέχεια το αρχικό παράδειγμα του κεφαλαίου τροποποιήθηκε ώστε να εκτελεί τον κώδικα δημιουργίας του GUI στην event-dispatching thread μέσω της μέθόδου invokelater. Για να αποφύγουμε κρεμάσματα σε Swing εφαρμογές είναι σκόπιμο να εκτελείται ο κώδικας εμφάνισης των GUI στην event-dispatching thread μέσω της μεθόδου invokelater. 36

Παράδειγμα χρήσης της μεθόδου invokelater (3/3) Παρόμοια με την invokelater είναι και η μέθοδος invokeandwait που μπορείτε να αναφερθείτε σε αυτή. 37

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

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