Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Swing II Εβδομάδα Νο. 6.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Swing II Εβδομάδα Νο. 6."— Μεταγράφημα παρουσίασης:

1 Swing II Εβδομάδα Νο. 6

2 Σημερινό μάθημα Ορθή ανάπτυξη παραθύρου (JFrame) διεπαφής
Events & Listeners Types of listeners Προσεγγίσεις δημιουργίας listeners Πίνακας αντιστοίχισης Event Listeners και JComponents

3 Ορθή ανάπτυξη παραθύρου (JFrame) διεπαφής
Αποφεύγουμε να δημιουργούμε όλη την διεπαφή στην main Προτιμότερος τρόπος: Δημιουργούμε μια νέα κλάση, έστω MyWindow, η οποία θα κάνει extends την κλάση JFrame Η MyWindow κληρονομεί ότι έχει η JFrame (πεδία και συμπεριφορές), οπότε είναι και αυτή ένα Jframe Μέσα στην MyWindow, χτίζουμε την διεπαφή όπως επιθυμούμε Στην main δημιουργούμε ένα στιγμιότυπο της MyWindow και το εμφανίζουμε

4 Ορθή ανάπτυξη παραθύρου (JFrame) διεπαφής - Παράδειγμα

5 Events και Listeners (1/3)
Κάθε φορά που αλληλοεπιδράει ο χρήστης με ένα component εκπέμπεται ένα event object (γεγονός) το οποίο περιέχει πληροφορίες για το συγκεκριμένο event και προσδιορίζει, εκτός των άλλων, ποια ήταν η πηγή του. π.χ. Σε μία εφαρμογή υπάρχει ένα JButton με κείμενο «Α». Πατώντας το κουμπί Α δημιουργείται ένα action event object του οποίου η πηγή είναι το κουμπί Α. Για να διαχειριστούμε αυτά τα events (event handling) χρησιμοποιούμε τους Εvent Listeners, στους οποίους ορίζουμε τι θα γίνεται κάθε φορά που θα εκπέμπεται ένα event.

6 Events και Listeners (2/3)
Ένας listener, αφού δημιουργηθεί και συσχετιστεί με κάποιο component, απλά το παρακολουθεί έως ότου το component αυτό εκπέμψει κάποιο event Μπορούν να δημιουργηθούν πολλοί listeners για να διαχειριστούν συγκεκριμένου τύπου events από μια συγκεκριμένη πηγή. Συσχέτιση πολλών listeners (απεριόριστου τύπου και πλήθους) με ένα component Κάποιος συγκεκριμένος listener μπορεί να χρησιμοποιηθεί για να διαχειριστεί events από διαφορετικές πηγές-αντικείμενα Συσχέτιση ενός listener με πολλά components

7 Events και Listeners (3/3)
Σε επίπεδο κώδικα, όλοι οι Listeners είναι interfaces Ένας listener πρέπει να γίνει implements από κάποια κλάση για να μπορεί να χρησιμοποιηθεί

8 Listeners that All Swing Components Support (1/2)
Component listener Listens for changes in the component's size, position, or visibility. Focus listener Listens for whether the component gained or lost the keyboard focus. Key listener Listens for key presses; key events are fired only by the component that has the current keyboard focus. Mouse listener Listens for mouse clicks, mouse presses, mouse releases and mouse movement into or out of the component's drawing area.

9 Listeners that All Swing Components Support (2/2)
Mouse-motion listener Listens for changes in the mouse cursor's position over the component. Mouse-wheel listener Listens for mouse wheel movement over the component. Hierarchy Listener Listens for changes to a component's containment hierarchy of changed events. Hierarchy Bounds Listener Listens for changes to a component's containment hierarchy of moved and resized events.

10 Other Listeners that Swing Components Support (1/2)

11 Other Listeners that Swing Components Support (2/2)

12 Προσεγγίσεις δημιουργίας listeners
Παραδείγματα με ActionListener

13 Κλάση σε Ξεχωριστό αρχείο – 1ο Παράδειγμα
Θέλω στην παρακάτω εφαρμογή κάθε φορά που πατάω το top να εμφανίζεται στο console η φράση “Hello World”. Φτιάχνω μια νέα κλάση η οποία θα κάνει implements το interface ActionListener To interface αυτό ορίζει την μέθοδο: void actionPerformed (ActionEvent e); την οποία πρέπει και να υλοποιήσουμε μέσα στην κλάση. Κάπου στο πρόγραμμα μου δημιουργώ έναν instance της κλάσης που υλοποίησα Ορίζω ποια components θέλω να «ακούει» αυτός ο Listener

14 Κλάση σε Ξεχωριστό αρχείο – 2ο Παράδειγμα
Θέλω στην παρακάτω εφαρμογή κάθε φορά που πατάω το top ή το bottom να εμφανίζεται στο console η φράση “Hello World” και να προσδιορίζει ποιο κουμπί πατήθηκε. Αλλάζω τον κώδικα έτσι ώστε να διαβάζω την πηγή του event Στο πρόγραμμα μου ορίζω τον listener να «ακούει» και το κουμπί bottom

15 Κλάση σε Ξεχωριστό αρχείο – 3ο Παράδειγμα
Θέλω στην προηγούμενη εφαρμογή κάθε φορά που πατάω κάποιο κουμπί να εμφανίζεται στο κεντρικό JTextArea η φράση “Hello World” και να προσδιορίζει ποιο κουμπί πατήθηκε. Βάζω σαν field στην κλάση τα components που θα «επηρεάζονται» από τα events Φτιάχνω τους κατάλληλους constructors Κάνω τις απαραίτητες τροποποιήσεις στην actionPerformed Κάπου στο πρόγραμμα μου, περνάω σαν όρισμα στον constructor του listener, το κεντρικό JTextArea Στην main ορίζω τον listener να «ακούει» και όλα τα κουμπιά

16 Anonymous class – 4ο Παράδειγμα
Θέλω στην προηγούμενη εφαρμογή κάθε φορά που πατάω ΤOP ή BOTTOM να εμφανίζεται στo κεντρικό JTextArea η φράση “Hello World” και να προσδιορίζει ποιο κουμπί πατήθηκε, κάθε φορά που πατάω RIGHT να εμφανίζεται «Sorry, we can`t go Right» ενώ κάθε φορά που πατάω LEFT να εμφανίζεται «Yes, let`s go Left» Εσωτερικά στους listeners, έχουμε πρόσβαση στις εξωτερικές μεταβλητές

17 Inner class – 5ο Παράδειγμα
Δημιουργώ μια κλάση (inner class) που υλοποιεί τον listener εσωτερικά στην κλάση όπου θέλω να τον χρησιμοποιήσω. Για τον λόγο ότι είναι εσωτερικά στην κλάση και όχι εξωτερικά (σε ξεχωριστό αρχείο), έχει πρόσβαση στα πεδία της εξωτερικής κλάσης

18 Change Listener

19 Item Listener

20 Mouse Listener

21 Άσκηση Προσαρμόστε τα προηγούμενα παραδείγματα με τους listeners (ActionListener, MouseListener, ItemListener, ChangeListener) στην παρακάτω διεπαφή

22 Χρήσιμα Links The Java Tutorials - Trail: Creating a GUI With JFC/Swing Lesson: Using Swing Components “Tells you how to use each of the Swing components — buttons, tables, text components, and all the rest. It also tells you how to use borders and icons.” Lesson: Writing Event Listeners  “ Τells you how to handle events in your programs.” The Java API: «This document is the API specification for the Java™ Platform, Standard Edition.» Το Application Programming Interface της Java (Java API) περιέχει όλες τις κλάσεις που διαθέτει η Java ομαδοποιημένες, ανάλογα με τις λειτουργίες που προσφέρουν , σε ενότητες(πακέτα), την περιγραφή της λειτουργίας κάθε κλάσης καθώς και των μεθόδων της.

23 Τέλος διαφανειών See you next time! The end


Κατέβασμα ppt "Swing II Εβδομάδα Νο. 6."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google