Τμήμα Πληροφορικής και Τηλεπικοινωνιών Γραφικά με Java Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 1
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Περιεχόμενα Γραφική Διεπαφή Χρήστη awt, swing Βασικές Τάξεις – Παραδείγματα Διαχείριση Θέσης Αντικείμενων Διαχείριση Συμβάντων (listeners) Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 2
Γραφική διεπαφή χρήστη Γραφική Διεπαφή Χρήστη (Graphical User Interface - GUI) είναι ένας απλός, εύχρηστος και γρήγορος τρόπος επικοινωνίας ανθρώπου και υπολογιστή. Η σημερινή διάδραση με τους υπολογιστές γίνεται πλέον μέσω γραφικών διεπαφών: MacOS, Linux, Windows…. Το GUI αφαιρεί την πολυπλοκότητα από την διαδικασία επικοινωνίας του χρήστη με τον υπολογιστή η οποία όμως μεταφέρεται στον προγραμματιστή: Σχεδιασμός και υλοποίηση διεπαφής Σχεδιασμός και υλοποίηση μηχανισμών ανάδρασης Όλα τα παραπάνω πρέπει να υλοποιηθούν «μη γραμμικά» Δεν υπάρχει συγκεκριμένος αριθμός μονοπατιών εξέλιξης του προγράμματος Η εφαρμογή πρέπει να έχει την ικανότητα να «δημιουργεί» τα μονοπάτια εκτέλεσης Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 3
Βασικές ιδέες λειτουργίας Ο πηγαίος κώδικας αποτελείται από υποτμήματα Ανάλογα με τις κινήσεις του χρήστη χρησιμοποιείται το αντίστοιχο τμήμα Πλαίσιο διαλόγου με «Ναι» - «Όχι» Αναμονή για τον χρήστη να επιλέξει την απάντηση και διαφορετικό αποτέλεσμα σε κάθε περίπτωση Νήμα εκτέλεσης Κώδικας εφαρμογής Κώδικας Εφαρμογής 1 Κώδικας Εφαρμογής n … Διαχειριστής Συμβάντων Συμβάν (πάτημα πλήκτρου, κλικ….) Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 4
Abstract Window Toolkit - AWT To AWT ανήκει στο Core Java API, δηλαδή αποτελεί ένα από τα πρώτα βασικά δομικά στοιχεία της γλώσσας (java.awt.*). Υλοποιεί την διεπαφή ανάμεσα σε μια java εφαρμογή και το λειτουργικό σύστημα Η εμφάνιση της ίδιας εφαρμογής διαφέρει ανάμεσα στα λειτουργικά συστήματα, καθώς οι λειτουργίες του πακέτου υλοποιούνται με διαφορετικό τρόπο Προσφέρει τάξεις για μικρό αριθμό αντικειμένων
Τμήμα Πληροφορικής και Τηλεπικοινωνιών javax.swing Η βιβλιοθήκη swing κληρονομεί και επεκτείνει την βιβλιοθήκη awt. Είναι υλοποιημένη εξ’ ολοκλήρου σε Java Cross platform compatibility Ίδια εμφάνιση (εφόσον απαιτηθεί από τον προγραμματιστή) Περιέχει περισσότερα γραφικά αντικείμενα Ευκολότερο στην χρήση Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 6
Σύνδεση των δύο πακέτων Το swing κληρονομεί και εξειδικεύει/ επεκτείνει τις τάξεις του AWT Σε πολλές εφαρμογές χρησιμοποιούνται και τα δύο παράλληλα Συγκριτική αποτίμηση: http://dn.codegear.com/el/article/26970 Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 7
Βασικά τμήματα διεπαφής JFrame: Το παράθυρο μέσα στο οποίο θα υλοποιηθεί η γραφική διεπαφή μας. JPanel: Ο χώρος του JFrame μέσα στον οποίο θα εμφανίσουμε στοιχεία της διεπαφής μας. Γενικά το JFrame είναι το παράθυρο της εφαρμογής, ενώ το JPanel το ενεργό τμήμα του, δηλαδή ο χώρος που περιέχει την διεπαφή (κουμπιά, λίστες…) Η αντιστοιχία JPanel με JFrame (ή Panel με Frame γενικότερα) είναι N-1, δηλαδή ένα Frame μπορεί να περιέχει περισσότερα του ενός Panel. Εξ’ ορισμού το Frame περιέχει ένα Panel καθώς και κατάλληλη μέθοδος πρόσβασης και διαχείρισης. Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 8
Βασικές Τάξεις - Παραδείγματα Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 9
Τμήμα Πληροφορικής και Τηλεπικοινωνιών JComponent Μια από τις βασικότερες τάξεις του πακέτου swing Οι περισσότερες τάξεις κληρονομούν και επεκτείνουν την συγκεκριμένη. Είναι τάξη container και μαζί με τις JFrame, JDialog και JApplet αποτελούν τις ανώτερες ιεραρχικά τάξεις του πακέτου Βασικές Μέθοδοι: get/setName() : Ορίζει/ Επιστρέφει το όνομα του component get/setSize() : Ορίζει / Επιστρέφει το μέγεθος του component get/setMaximumSize() : Ορίζει / Επιστρέφει το μέγιστο επιτρεπόμενο μέγεθος get/setMinimumSize() : Ορίζει / Επιστρέφει το ελάχιστο επιτρεπόμενο όριο getWidth() : Επιστρέφει το πλάτος του component getHeight() : Επιστρέφει το ύψος του component getX() : Επιστρέφει την τιμή του Χ (πάνω αριστερό άκρο του component) getY() : Επιστρέφει την τιμή του Y (πάνω αριστερό άκρο του component) Όλες οι κλάσεις γραφικών έχουν σημαντικό αριθμό μεθόδων. Εδώ παρουσιάζεται ένα πολύ μικρό υποσύνολό τους. Για περισσότερες λεπτομέρειες ανατρέξτε στην τεκμηρίωση http://docs.oracle.com/javase/6/docs/api/ Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 10
Τμήμα Πληροφορικής και Τηλεπικοινωνιών JFrame Η κλάση JFrame είναι η swing υλοποίηση της τάξης Frame. Μέσω της Frame ορίζεται το παράθυρο της εφαρμογής. Κληρονομεί μεθόδους από την τάξη Component συνεπώς έχει ομοιότητες με την JComponent Βασικές μέθοδοι: JFrame(String name): Κατασκευάζει ένα παράθυρο με τον προσδιοριζόμενο τίτλο. getContentPane: Επιστρέφει το Panel, δηλαδή τον χώρο, μέσα στο οποίο θα σχεδιαστούν τα γραφικά στοιχεία του Frame setDefaultCloseOperation(int i): Ορίζει την συμπεριφορά του Frame όταν πατηθεί το X setVisible(boolean s): Ορίζει αν το Frame είναι εμφανές ή όχι setResizable(boolean s): Ορίζει την συμπεριφορά του Frame όταν πατηθεί το Με τις μεθόδους ορισμού μέγιστου και ελάχιστου μεγέθους προσδιορίζεται η εμφάνιση του Frame σε κάθε περίπτωση Παράμετροι εισόδου στην μέθοδο setDefaultCloseOperation: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, DISPOSE_ON_CLOSE EXIT_ON_CLOSE Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 11
Τμήμα Πληροφορικής και Τηλεπικοινωνιών JPanel To JPanel είναι η τάξη στην οποία προστίθενται τα αντικείμενα που θέλουμε να εμφανίσουμε στην διεπαφή μας. Η βασική μέθοδος πρόσθεσης αντικειμένων είναι η add (Component c) Το πώς εμφανίζονται τα αντικείμενα στο περιβάλλον ορίζεται από το Layout Ο τρόπος συνδυασμού των κλάσεων και η διαδικασία υλοποίησης φαίνονται στα παρακάτω σχήματα (αριστερά και δεξιά αντίστοιχα) : Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 12
Τμήμα Πληροφορικής και Τηλεπικοινωνιών JButton To JButton είναι η πιο απλή και πλέον χρησιμοποιούμενη τάξη του πακέτου. Είναι η απλή υλοποίηση ενός κουμπιού! Βασικές μέθοδοι: JButton(String s): Δημιουργεί ένα κουμπί με συμβολοσειρά s Μέθοδοι προσδιορισμού μεγέθους και θέσης στον χώρο κληρονομούνται από το JComponent addActionListener(ActionListener l): Προσθέτει έναν διαχειριστή συμβάντων στο κουμπί. Ο διαχειριστής προσδιορίζει τον τρόπο αντίδρασης της εφαρμογής στο πάτημα του κουμπιού. Εμφάνιση του αντικειμένου στο παράθυρο: Ορισμός βασικών παραμέτρων του κουμπιού. Πρόσβαση στον χώρο περιεχομένου (getContentPane()) του Frame Προσθήκη σε αυτόν του κουμπιού. Εμφάνιση του Frame. Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 13
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Παράδειγμα 1 Δημιουργούμε ένα JFrame και προσθέτουμε σε αυτό ένα JButton. Imports: JButton, JFrame, Dimensions, Panel Η τάξη μας κληρονομεί και επεκτείνει την τάξη JFrame Κλήση στον constructor της JFrame Δεν θέλουμε διαχειριστή τοποθέτησης των αντικειμένων Συμπεριφορά κατά την χρήση του X Ορισμός μεγέθους, αρχικού, μέγιστου και ελάχιστου Τοποθέτηση του αντικειμένου στον χώρο του Frame Ορισμός συμβολοσειράς Πρόσβαση στο panel του TestFrame και προσθήκη σε αυτό του κουμπιού Εμφάνιση του Frame Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 14
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Menus (I) Είναι οι τάξεις εκείνες που μας επιτρέπουν την δημιουργία των παραθυρικών μενού διαχείρισης. JMenuBar JMenu JMenuItem JSeparator Δημιουργία menus: Ορίζουμε αρχικά τα αντικείμενα των menus (JMenuItem) Τα χωρίζουμε σε λογικά υποσύνολα (JMenu) Τα επιμέρους JMenu τοποθετούνται σε ένα JMenuBar Ένα JMenu μπορεί να περιέχει και άλλα JMenu (pop up υπό-λίστες) Το JSeparator χωρίζει αντικείμενα ενός μενού JMenuBar JMenu JMenuItem JSeparator setEnabled(false) setEnabled(true) setText(“Replace”) Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 15
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Menus (II) Η τάξη JMenuBar δεν τοποθετείται μέσα στον ενεργό χώρο του JFrame αλλά αποτελεί ξεχωριστό τμήμα του, δηλαδή είναι κομμάτι της παραθυρικής εφαρμογής Μέθοδος JFrame: setJMenuBar(JMenuBar bar) H μέθοδος setEnabled που εμφανίζεται σε όλα τα αντικείμενα που υπάρχουν σε ένα JMenuBar επιτρέπει την ενεργοποίηση ή απενεργοποίησή τους ανάλογα με τις ανάγκες τις εφαρμογής H μέθοδος add του JMenu επιτρέπει την προσθήκη είτε JMenuItem ή JMenu. Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 16
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Παράδειγμα 2 Θα δημιουργήσουμε το menu του PowerPoint. Θα αναπτύξουμε πλήρως την περίπτωση File αγνοώντας τις συντομεύσεις του πληκτρολογίου. Απενεργοποίηση των επιλογών Save As και View Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 17
Τμήμα Πληροφορικής και Τηλεπικοινωνιών JTextField JLabel To JTextField είναι η τάξη που επιτρέπει την εισαγωγή κειμένου μέσω της γραφικής διεπαφής: set/getColumns: ορίζει/επιστρέφει τον αριθμό των στοιχείων που χωράνε σε ένα JTextField. set/getText: ορίζει/επιστρέφει το κείμενο που εμφανίζεται στο JTextField. Οι μέθοδοι τοποθέτησης στον χώρο καθώς και προσδιορισμού μεγέθους είναι ίδιες με πριν. To JLabel είναι η τάξη που επιτρέπει την εμφάνιση κειμένου (περιγραφικό κείμενο δίπλα σε πεδία κειμένου) στην διεπαφή. set/getText: ορίζει/επιστρέφει το κείμενο που εμφανίζεται στο JLabel. set/getIcon: ορίζει/επιστρέφει το εικονίδιο που χρησιμοποιεί το JLabel. Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 18
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Παράδειγμα 3 Υλοποιούμε το σχήμα της προηγούμενης διαφάνειας. Τροποποιήστε κατάλληλα το JFrame του αρχικού παραδείγματος ώστε να εμφανίζονται σωστά τα δεδομένα. Μέγεθος του JLabel και σημείο εμφάνισης στον χώρο Μέγεθος του JTextField και σημείο Προσθήκη στο παράθυρο Το πάχος των δύο αντικειμένων είναι ίδιο Η συντεταγμένη y είναι Ίδια και για τα δύο Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 19
Τμήμα Πληροφορικής και Τηλεπικοινωνιών JTextArea To JTextArea είναι μια τάξη που επιτρέπει την δημιουργία πεδίων εισαγωγής κειμένου (σημαντικού μεγέθους) στην γραφική διεπαφή Σε γενικές γραμμές έχει παρεμφερή διαχείριση με το JTextField. Προσφέρει ένα σύνολο μεθόδων για διαχείριση κειμένου append(String s): Προσθήκη της συμβολοσειράς s στο τέλος του ήδη υπάρχοντος κειμένου setLineWrap(boolean): Δυνατότητα αναδίπλωσης της εισαγόμενης συμβολοσειράς getLineWrap(): Αν είναι ενεργοποιημένη η παραπάνω δυνατότητα getLineCount(): Ο αριθμός των γραμμών που περιέχονται στο JTextField setEditable(boolean): Αν μπορεί ο χρήστης να αλλάξει το περιεχόμενο του JTextArea Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 20
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Παράδειγμα 4 Σαν τελευταία εφαρμογή σχεδιάζουμε ένα παράθυρο στο οποίο στην ίδια ευθεία θα εμφανίζονται ένα JLabel, ένα JTextField και ένα JButton. Ο χρήστης θα πρέπει να συμπληρώσει κατάλληλα το πεδίο και να πατήσει το κουμπί. Οι οδηγίες θα δίνονται στο JTextArea που θα εμφανίζεται ακριβώς από κάτω με την μορφή βοήθειας. Το περιεχόμενο της βοήθειας δεν θα πρέπει να μπορεί να αλλαχθεί. Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 21
Διαχείριση θέσης αντικειμένων Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 22
Διαχείριση θέσης αντικειμένων Σε αντίθεση με τις απόλυτες συντεταγμένες που είδαμε προηγουμένως, η Java δίνει την δυνατότητα η τοποθέτηση των αντικειμένων στα παράθυρα να γίνεται αυτόματα μέσω ειδικών τάξεων, των διαχειριστών τοποθέτησης (Layout Manager) FlowLayout Είναι ο εξ’ορισμού διαχειριστής τοποθέτησης αντικειμένων Τοποθετεί τα αντικείμενα το ένα δίπλα στο άλλο σε όλο το μήκος το παραθύρου. Ακολούθως περνά στην επόμενη σειρά κ.λ.π. Τα αντικείμενα είναι απολύτως ευθυγραμμισμένα. GridLayout Διαιρεί τον χώρο του παραθύρου με ένα πλέγμα nxn Η τοποθέτηση των αντικειμένων ξεκινά από το πλέον αριστερό άκρο του πλέγματος και κατευθύνεται προς τα δεξιά. Όταν τελειώσουν τα κελιά της πρώτης γραμμής περνά στην δεύτερη κ.λ.π. BorderLayout Διαιρεί τον χώρο στα σημεία του ορίζοντα! Το κεντρικό κομμάτι καταλαμβάνει τον μεγαλύτερο χώρο ενώ όλα τα υπόλοιπα τοποθετούνται δεξιά, αριστερά, πάνω και κάτω αυτού. Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 23
Παράδειγμα FlowLayout Ορισμός βασικών παραμέτρων του παραθύρου Ορισμός ενός νέου Panel με το οποίο θα δουλέψουμε (ΟΧΙ το default) Ορισμός του Layout που θέλουμε να χρησιμοποιήσουμε. Η παράμετρος ορίζει τον τρόπο με τον οποίο θέλουμε να εμφανίζονται τα αντικείμενα (αριστερά - δεξιά) Ορισμός του Layout που θέλουμε να χρησιμοποιήσει το Panel μας. Ορισμός του αντικειμένου και προσθήκη του στο Panel. Το πού θα τοποθετηθεί ορίζεται από τον διαχειριστή. Ορισμός του εξ’ορισμού ενεργού χώρου του παραθύρου. Τοποθετούμε το δικό μας Panel (Container) αντί αυτού που έχει το JFrame Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 24
Παράδειγμα GridLayout Ορισμός βασικών παραμέτρων του παραθύρου Ορισμός ενός νέου Panel με το οποίο θα δουλέψουμε (ΟΧΙ το default) Ορισμός του Layout που θέλουμε να χρησιμοποιήσουμε. Οι παράμετρος ορίζουν τις διαστάσεις του πλέγματος καθώς και τις αποστάσεις ανάμεσα στα κενά Ορισμός του Layout που θέλουμε να χρησιμοποιήσει το Panel μας. Ορισμός του αντικειμένου και προσθήκη του στο Panel. Το πού θα τοποθετηθεί ορίζεται από τον διαχειριστή. Ορισμός του εξ’ορισμού ενεργού χώρου του παραθύρου. Τοποθετούμε το δικό μας Panel (Container) αντί αυτού που έχει το JFrame Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 25
Παράδειγμα BorderLayout Ορισμός των αντικειμένων που θέλουμε να χρησιμοποιήσουμε Ορισμός βασικών παραμέτρων του παραθύρου Ορισμός του Layout που θέλουμε να χρησιμοποιήσουμε. Ορισμός του Layout που θέλουμε να χρησιμοποιήσει το Panel μας. Ορισμός του αντικειμένου και προσθήκη του στο Panel. Το πού θα τοποθετηθεί ορίζεται έμμεσα από τον προγραμματιστή. Ορισμός του εξ’ορισμού ενεργού χώρου του παραθύρου. Τοποθετούμε το δικό μας Panel (Container) αντί αυτού που έχει το JFrame Διάλεξη 7 26
Συνδυασμός Layout Managers Τελικά ποιόν διαχειριστή τοποθέτησης πρέπει να χρησιμοποιήσουμε FlowLayout: Υπερβολικά απλός και χαλάει την διαρρύθμιση των αντικειμένων όταν το παράθυρο αλλάζει μέγεθος. GridLayout: Πολύ απλό! BorderLayout: Δίνει ελάχιστη ευελιξία τροποποίησης των διαστάσεων κάθε τμήματος. Πρέπει να συνδυαστούν οι επιμέρους διαχειριστές! Προσθέτουμε περισσότερα panel στο παράθυρο μας GridLayout (2x4) FlowLayout BorderLayout Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 27
Συνδυασμός Layout Managers Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 28
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Listeners Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 29
Listeners = Interfaces Actions: Κλικ ένα κουμπί Επιλογή ενός menu item Κλικ Enter σε ένα text field Πάτημα ενός πλήκτρου Αποτέλεσμα ενός Action… Event Πώς διαχειριζόμαστε τα Events? Listeners Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 30
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Listeners Τι είναι οι listeners? Interfaces Mε αυτό τον τρόπο χρησιμοποιούνται όταν κάποιος θέλει να παράσχει κάποιες abstract λειτουργικότητες. Ο κάθε χρήστης μπορεί να χρησιμοποιήσει τους Listeners (= interface) για να κάνει διαφορετικές λειτουργίες. Κάποιος μπορεί να τυπώνει ένα box που αναβοσβήνει, ενώ κάποιος άλλον να στέλνει ένα μήνυμα. Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 31
Παράδειγμα ActionListener (1/2) Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 32
Παράδειγμα ActionListener (2/2) Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 33
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Αλλοι Listeners Interface KeyListener keyPressed(KeyEvent e) keyReleased(KeyEvent e) keyTyped(KeyEvent e) Interface MouseListener mouseClicked(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) Interface MouseMotionListener mouseDragged(MouseEvent e) mouseMoved(MouseEvent e) Interface WindowListener windowActivated(WindowEvent e) windowClosed(WindowEvent e) windowClosing(WindowEvent e) windowDeactivated(WindowEvent e) windowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 34
Παράδειγμα Calculator (1/5) Graphical User Interface Frame Functionalities – Actions Action Listeners Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 35
Παράδειγμα Calculator (2/5) Frame Creation Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 36
Παράδειγμα Calculator (1/X) Frame Creation Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 37
Παράδειγμα Calculator (1/X) Action Listeners Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2015-2016 38
Παράδειγμα Calculator (5/5) Action Listeners Διάλεξη 7 39