Γραφικά με Java 1 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Περιεχόμενα Γραφική Διεπαφή Χρήστη awt, swing Βασικές Τάξεις – Παραδείγματα Διαχείριση Θέσης Αντικείμενων Διαχείριση Συμβάντων (listeners) 2 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Γραφική διεπαφή χρήστη Γραφική Διεπαφή Χρήστη (Graphical User Interface - GUI) είναι ένας απλός, εύχρηστος και γρήγορος τρόπος επικοινωνίας ανθρώπου και υπολογιστή. Η σημερινή διάδραση με τους υπολογιστές γίνεται πλέον μέσω γραφικών διεπαφών: MacOS, Linux, Windows…. Το GUI αφαιρεί την πολυπλοκότητα από την διαδικασία επικοινωνίας του χρήστη με τον υπολογιστή η οποία όμως μεταφέρεται στον προγραμματιστή: Σχεδιασμός και υλοποίηση διεπαφής Σχεδιασμός και υλοποίηση μηχανισμών ανάδρασης Όλα τα παραπάνω πρέπει να υλοποιηθούν «μη γραμμικά» Δεν υπάρχει συγκεκριμένος αριθμός μονοπατιών εξέλιξης του προγράμματος Η εφαρμογή πρέπει να έχει την ικανότητα να «δημιουργεί» τα μονοπάτια εκτέλεσης 3 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Βασικές ιδέες λειτουργίας Ο πηγαίος κώδικας αποτελείται από υποτμήματα Ανάλογα με τις κινήσεις του χρήστη χρησιμοποιείται το αντίστοιχο τμήμα Πλαίσιο διαλόγου με «Ναι» - «Όχι» Αναμονή για τον χρήστη να επιλέξει την απάντηση και διαφορετικό αποτέλεσμα σε κάθε περίπτωση Νήμα εκτέλεσης Συμβάν (πάτημα πλήκτρου, κλικ….) Κώδικας εφαρμογής Κώδικας Εφαρμογής 1 Κώδικας Εφαρμογής n Διαχειριστής Συμβάντων … 4 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Abstract Window Toolkit - AWT To AWT ανήκει στο Core Java API, δηλαδή αποτελεί ένα από τα πρώτα βασικά δομικά στοιχεία της γλώσσας (java.awt.*). Υλοποιεί την διεπαφή ανάμεσα σε μια java εφαρμογή και το λειτουργικό σύστημα Η εμφάνιση της ίδιας εφαρμογής διαφέρει ανάμεσα στα λειτουργικά συστήματα, καθώς οι λειτουργίες του πακέτου υλοποιούνται με διαφορετικό τρόπο Προσφέρει τάξεις για μικρό αριθμό αντικειμένων
javax.swing Η βιβλιοθήκη swing κληρονομεί και επεκτείνει την βιβλιοθήκη awt. Είναι υλοποιημένη εξ’ ολοκλήρου σε Java Cross platform compatibility Ίδια εμφάνιση (εφόσον απαιτηθεί από τον προγραμματιστή) Περιέχει περισσότερα γραφικά αντικείμενα Ευκολότερο στην χρήση 6 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Σύνδεση των δύο πακέτων Το swing κληρονομεί και εξειδικεύει/ επεκτείνει τις τάξεις του AWT Σε πολλές εφαρμογές χρησιμοποιούνται και τα δύο παράλληλα Συγκριτική αποτίμηση: 7 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Βασικά τμήματα διεπαφής JFrame: Το παράθυρο μέσα στο οποίο θα υλοποιηθεί η γραφική διεπαφή μας. JPanel: Ο χώρος του JFrame μέσα στον οποίο θα εμφανίσουμε στοιχεία της διεπαφής μας. Η αντιστοιχία JPanel με JFrame (ή Panel με Frame γενικότερα) είναι N-1, δηλαδή ένα Frame μπορεί να περιέχει περισσότερα του ενός Panel. Εξ’ ορισμού το Frame περιέχει ένα Panel καθώς και κατάλληλη μέθοδος πρόσβασης και διαχείρισης. Γενικά το JFrame είναι το παράθυρο της εφαρμογής, ενώ το JPanel το ενεργό τμήμα του, δηλαδή ο χώρος που περιέχει την διεπαφή (κουμπιά, λίστες…) 8 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Βασικές Τάξεις - Παραδείγματα 9 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
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) Όλες οι κλάσεις γραφικών έχουν σημαντικό αριθμό μεθόδων. Εδώ παρουσιάζεται ένα πολύ μικρό υποσύνολό τους. Για περισσότερες λεπτομέρειες ανατρέξτε στην τεκμηρίωση 10 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
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 11 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
JPanel To JPanel είναι η τάξη στην οποία προστίθενται τα αντικείμενα που θέλουμε να εμφανίσουμε στην διεπαφή μας. Η βασική μέθοδος πρόσθεσης αντικειμένων είναι η add (Component c) Το πώς εμφανίζονται τα αντικείμενα στο περιβάλλον ορίζεται από το Layout Ο τρόπος συνδυασμού των κλάσεων και η διαδικασία υλοποίησης φαίνονται στα παρακάτω σχήματα (αριστερά και δεξιά αντίστοιχα) : 12 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
JButton To JButton είναι η πιο απλή και πλέον χρησιμοποιούμενη τάξη του πακέτου. Είναι η απλή υλοποίηση ενός κουμπιού! Βασικές μέθοδοι: JButton(String s): Δημιουργεί ένα κουμπί με συμβολοσειρά s Μέθοδοι προσδιορισμού μεγέθους και θέσης στον χώρο κληρονομούνται από το JComponent addActionListener(ActionListener l): Προσθέτει έναν διαχειριστή συμβάντων στο κουμπί. Ο διαχειριστής προσδιορίζει τον τρόπο αντίδρασης της εφαρμογής στο πάτημα του κουμπιού. Εμφάνιση του αντικειμένου στο παράθυρο: Ορισμός βασικών παραμέτρων του κουμπιού. Πρόσβαση στον χώρο περιεχομένου (getContentPane()) του Frame Προσθήκη σε αυτόν του κουμπιού. Εμφάνιση του Frame. 13 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα 1 Δημιουργούμε ένα JFrame και προσθέτουμε σε αυτό ένα JButton. Imports: JButton, JFrame, Dimensions, Panel Η τάξη μας κληρονομεί και επεκτείνει την τάξη JFrame Κλήση στον constructor της JFrame Δεν θέλουμε διαχειριστή τοποθέτησης των αντικειμένων Συμπεριφορά κατά την χρήση του X Ορισμός μεγέθους, αρχικού, μέγιστου και ελάχιστου Τοποθέτηση του αντικειμένου στον χώρο του Frame Ορισμός συμβολοσειράς Πρόσβαση στο panel του TestFrame και προσθήκη σε αυτό του κουμπιού Εμφάνιση του Frame 14 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
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”) 15 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Menus (II) Η τάξη JMenuBar δεν τοποθετείται μέσα στον ενεργό χώρο του JFrame αλλά αποτελεί ξεχωριστό τμήμα του, δηλαδή είναι κομμάτι της παραθυρικής εφαρμογής Μέθοδος JFrame: setJMenuBar(JMenuBar bar) H μέθοδος setEnabled που εμφανίζεται σε όλα τα αντικείμενα που υπάρχουν σε ένα JMenuBar επιτρέπει την ενεργοποίηση ή απενεργοποίησή τους ανάλογα με τις ανάγκες τις εφαρμογής H μέθοδος add του JMenu επιτρέπει την προσθήκη είτε JMenuItem ή JMenu. 16 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Διάλεξη 7 Παράδειγμα 2 Θα δημιουργήσουμε το menu του PowerPoint. Θα αναπτύξουμε πλήρως την περίπτωση File αγνοώντας τις συντομεύσεις του πληκτρολογίου. Απενεργοποίηση των επιλογών Save As και View 17 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
JTextField JLabel To JTextField είναι η τάξη που επιτρέπει την εισαγωγή κειμένου μέσω της γραφικής διεπαφής: set/getColumns: ορίζει/επιστρέφει τον αριθμό των στοιχείων που χωράνε σε ένα JTextField. set/getText: ορίζει/επιστρέφει το κείμενο που εμφανίζεται στο JTextField. Οι μέθοδοι τοποθέτησης στον χώρο καθώς και προσδιορισμού μεγέθους είναι ίδιες με πριν. To JLabel είναι η τάξη που επιτρέπει την εμφάνιση κειμένου (περιγραφικό κείμενο δίπλα σε πεδία κειμένου) στην διεπαφή. set/getText: ορίζει/επιστρέφει το κείμενο που εμφανίζεται στο JLabel. set/getIcon: ορίζει/επιστρέφει το εικονίδιο που χρησιμοποιεί το JLabel. Οι μέθοδοι τοποθέτησης στον χώρο καθώς και προσδιορισμού μεγέθους είναι ίδιες με πριν. 18 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα 3 Υλοποιούμε το σχήμα της προηγούμενης διαφάνειας. Τροποποιήστε κατάλληλα το JFrame του αρχικού παραδείγματος ώστε να εμφανίζονται σωστά τα δεδομένα. Μέγεθος του JLabel και σημείο εμφάνισης στον χώρο Μέγεθος του JTextField και σημείο εμφάνισης στον χώρο Προσθήκη στο παράθυρο Το πάχος των δύο αντικειμένων είναι ίδιο Η συντεταγμένη y είναι Ίδια και για τα δύο 19 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
JTextArea To JTextArea είναι μια τάξη που επιτρέπει την δημιουργία πεδίων εισαγωγής κειμένου (σημαντικού μεγέθους) στην γραφική διεπαφή Σε γενικές γραμμές έχει παρεμφερή διαχείριση με το JTextField. Προσφέρει ένα σύνολο μεθόδων για διαχείριση κειμένου append(String s): Προσθήκη της συμβολοσειράς s στο τέλος του ήδη υπάρχοντος κειμένου setLineWrap(boolean): Δυνατότητα αναδίπλωσης της εισαγόμενης συμβολοσειράς getLineWrap(): Αν είναι ενεργοποιημένη η παραπάνω δυνατότητα getLineCount(): Ο αριθμός των γραμμών που περιέχονται στο JTextField setEditable(boolean): Αν μπορεί ο χρήστης να αλλάξει το περιεχόμενο του JTextArea 20 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα 4 Σαν τελευταία εφαρμογή σχεδιάζουμε ένα παράθυρο στο οποίο στην ίδια ευθεία θα εμφανίζονται ένα JLabel, ένα JTextField και ένα JButton. Ο χρήστης θα πρέπει να συμπληρώσει κατάλληλα το πεδίο και να πατήσει το κουμπί. Οι οδηγίες θα δίνονται στο JTextArea που θα εμφανίζεται ακριβώς από κάτω με την μορφή βοήθειας. Το περιεχόμενο της βοήθειας δεν θα πρέπει να μπορεί να αλλαχθεί. 21 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Διαχείριση θέσης αντικειμένων 22 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Διαχείριση θέσης αντικειμένων Σε αντίθεση με τις απόλυτες συντεταγμένες που είδαμε προηγουμένως, η Java δίνει την δυνατότητα η τοποθέτηση των αντικειμένων στα παράθυρα να γίνεται αυτόματα μέσω ειδικών τάξεων, των διαχειριστών τοποθέτησης (Layout Manager) FlowLayout Είναι ο εξ’ορισμού διαχειριστής τοποθέτησης αντικειμένων Τοποθετεί τα αντικείμενα το ένα δίπλα στο άλλο σε όλο το μήκος το παραθύρου. Ακολούθως περνά στην επόμενη σειρά κ.λ.π. Τα αντικείμενα είναι απολύτως ευθυγραμμισμένα. GridLayout Διαιρεί τον χώρο του παραθύρου με ένα πλέγμα nxn Η τοποθέτηση των αντικειμένων ξεκινά από το πλέον αριστερό άκρο του πλέγματος και κατευθύνεται προς τα δεξιά. Όταν τελειώσουν τα κελιά της πρώτης γραμμής περνά στην δεύτερη κ.λ.π. BorderLayout Διαιρεί τον χώρο στα σημεία του ορίζοντα! Το κεντρικό κομμάτι καταλαμβάνει τον μεγαλύτερο χώρο ενώ όλα τα υπόλοιπα τοποθετούνται δεξιά, αριστερά, πάνω και κάτω αυτού. 23 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα FlowLayout Ορισμός βασικών παραμέτρων του παραθύρου Ορισμός ενός νέου Panel με το οποίο θα δουλέψουμε (ΟΧΙ το default) Ορισμός του Layout που θέλουμε να χρησιμοποιήσουμε. Η παράμετρος ορίζει τον τρόπο με τον οποίο θέλουμε να εμφανίζονται τα αντικείμενα (αριστερά - δεξιά) Ορισμός του Layout που θέλουμε να χρησιμοποιήσει το Panel μας. Ορισμός του αντικειμένου και προσθήκη του στο Panel. Το πού θα τοποθετηθεί ορίζεται από τον διαχειριστή. Ορισμός του εξ’ορισμού ενεργού χώρου του παραθύρου. Τοποθετούμε το δικό μας Panel (Container) αντί αυτού που έχει το JFrame 24 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα GridLayout Ορισμός βασικών παραμέτρων του παραθύρου Ορισμός ενός νέου Panel με το οποίο θα δουλέψουμε (ΟΧΙ το default) Ορισμός του Layout που θέλουμε να χρησιμοποιήσουμε. Οι παράμετρος ορίζουν τις διαστάσεις του πλέγματος καθώς και τις αποστάσεις ανάμεσα στα κενά Ορισμός του Layout που θέλουμε να χρησιμοποιήσει το Panel μας. Ορισμός του αντικειμένου και προσθήκη του στο Panel. Το πού θα τοποθετηθεί ορίζεται από τον διαχειριστή. Ορισμός του εξ’ορισμού ενεργού χώρου του παραθύρου. Τοποθετούμε το δικό μας Panel (Container) αντί αυτού που έχει το JFrame 25 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα BorderLayout Ορισμός βασικών παραμέτρων του παραθύρου Ορισμός των αντικειμένων που θέλουμε να χρησιμοποιήσουμε Ορισμός του Layout που θέλουμε να χρησιμοποιήσουμε. Ορισμός του Layout που θέλουμε να χρησιμοποιήσει το Panel μας. Ορισμός του αντικειμένου και προσθήκη του στο Panel. Το πού θα τοποθετηθεί ορίζεται έμμεσα από τον προγραμματιστή. Ορισμός του εξ’ορισμού ενεργού χώρου του παραθύρου. Τοποθετούμε το δικό μας Panel (Container) αντί αυτού που έχει το JFrame 26 Διάλεξη 7
Συνδυασμός Layout Managers Τελικά ποιόν διαχειριστή τοποθέτησης πρέπει να χρησιμοποιήσουμε FlowLayout: Υπερβολικά απλός και χαλάει την διαρρύθμιση των αντικειμένων όταν το παράθυρο αλλάζει μέγεθος. GridLayout: Πολύ απλό! BorderLayout: Δίνει ελάχιστη ευελιξία τροποποίησης των διαστάσεων κάθε τμήματος. Πρέπει να συνδυαστούν οι επιμέρους διαχειριστές! Προσθέτουμε περισσότερα panel στο παράθυρο μας GridLayout (2x4) FlowLayout BorderLayout 27 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Διάλεξη 7 Συνδυασμός Layout Managers 28 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Listeners 29 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Listeners = Interfaces Actions: Κλικ ένα κουμπί Επιλογή ενός menu item Κλικ Enter σε ένα text field Πάτημα ενός πλήκτρου Αποτέλεσμα ενός Action… Event Πώς διαχειριζόμαστε τα Events? Listeners 30 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Listeners Τι είναι οι listeners? Interfaces Mε αυτό τον τρόπο χρησιμοποιούνται όταν κάποιος θέλει να παράσχει κάποιες abstract λειτουργικότητες. Ο κάθε χρήστης μπορεί να χρησιμοποιήσει τους Listeners (= interface) για να κάνει διαφορετικές λειτουργίες. Κάποιος μπορεί να τυπώνει ένα box που αναβοσβήνει, ενώ κάποιος άλλον να στέλνει ένα μήνυμα. 31 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα ActionListener (1/2) 32 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα ActionListener (2/2) 33 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Αλλοι 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) 34 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα Calculator (1/5) Graphical User Interface Frame Functionalities – Actions Action Listeners 35 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα Calculator (2/5) Frame Creation 36 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα Calculator (1/X) Frame Creation 37 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Παράδειγμα Calculator (1/X) Action Listeners 38 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Διάλεξη 7 39 Παράδειγμα Calculator (5/5) Action Listeners