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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Advertisements

ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Πανεπιστήμιο Αιγαίου Σχολή Επιστημών της Διοίκησης Τμήμα Μηχανικών Οικονομίας & Διοίκησης Computer applications in the modern enterprise Γ. Κούζας, PhD.
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Databases & Qt Μανούσης Πέτρος ΑΜ: 862
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 10: Graphical User Interfaces Εβδομάδα 10: Εισαγωγή στα Γραφικά Περιβάλλοντα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Γραφικά Ενδιάμεσα Χρήστη στην Java
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING Επισκόπηση.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Classes, Objects, και Events.
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ Παρουσίαση της LessTif  Μαραγκός ΘοδωρήςΑ.Μ. 557  Καρκάνης ΗλίαςΑ.Μ. 539.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Διαχείριση γεγονότων (events) Γεγονότα: Κλήσεις που παράγονται από γραφικά στοιχεία (Components) π.χ. click ποντικιού, μετακίνηση ποντικιού Ακρόαση-Διαχείριση.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
Μαθαίνοντας Python ΣΕΜΙΝΑΡΙΟ PYTHON 2014
Κεφάλαιο 7 Abstract Window Toolkit (AWT). 2 Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και λειτουργία ενός γραφικού περιβάλλοντος εργασίας.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
Προσομοίωση Δικτύων 3η Άσκηση Δημιουργία, διαμόρφωση μελέτη σύνθετων τοπολογιών.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Γραφικά με Java 1 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Frames σε ιστοσελίδα HTML
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Software Engineering for Web Applications
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
JSIS E 111: Elementary Modern Greek
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
JSIS E 111: Elementary Modern Greek
JSIS E 111: Elementary Modern Greek
Web Services στη C# Εργαστήριο 3
We are the world Τραγούδι με μήνυμα για την ισότητα των παιδιών και όλων των ανθρώπων 13/12/2016 Παναγιώτης Γαλατσίδας.
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προχωρημένος Προγραμματισμός
JAVA Basics Εβδομάδα Νο. 1.
JAVA – Basic OOP Principles
ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Week 10: Graphical User Interfaces
Επικοινωνίας Java με Swing
Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

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

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. https://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html

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. https://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html

Other Listeners that Swing Components Support (1/2) https://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html

Other Listeners that Swing Components Support (2/2) https://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html

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

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

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

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

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

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

Change Listener

Item Listener

Mouse Listener ≈

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

Χρήσιμα Links The Java Tutorials - Trail: Creating a GUI With JFC/Swing Lesson: Using Swing Components http://download.oracle.com/javase/tutorial/uiswing/components/index.html “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  http://download.oracle.com/javase/tutorial/uiswing/events/index.html “ Τells you how to handle events in your programs.” The Java API: https://docs.oracle.com/javase/7/docs/api/ «This document is the API specification for the Java™ Platform, Standard Edition.» Το Application Programming Interface της Java (Java API) περιέχει όλες τις κλάσεις που διαθέτει η Java ομαδοποιημένες, ανάλογα με τις λειτουργίες που προσφέρουν , σε ενότητες(πακέτα), την περιγραφή της λειτουργίας κάθε κλάσης καθώς και των μεθόδων της.

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