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

Σχετικά έγγραφα
Week 10: Graphical User Interfaces

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

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

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

Week 12: GUIs with Swing

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

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

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

8.1 Top-Level Swing Containers και Swing Components

8. Το μοντέλο συμβάντων του AWT

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

7. Ανάπτυξη GUI σε Java

Περιεχόµενα. Πρόλογος...15

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

ΓΡΑΦΙΚΕΣ ΔΙΕΠΑΦΕΣ ΧΡΗΣΤΗ- SWING (1)

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

Εισαγωγή. Κεφάλαιο 2: Βασικές έννοιες Java Κεφάλαιο 3: Χρήση της Java στις σελίδες σας Κεφάλαιο 4: Οι πρώτες σας μικροεφαρμογές...

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2008 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

Εφαρμογή Αναζήτησης στον Ελληνικό Γεωγραφικό Χώρο

Σύνθεταγραφικάσ ε Java

Το επόμενο σχήμα εμφανίζει την ιεραρχία των GUI-components κλάσεων μαζί με κάποιες επιπλέον συμπληρωματικές κλάσεις που διαχειρίζονται ένα GUI.

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

Μέρος ΙΙ Εφαρμογές γραφικών με το πακέτο swing - 5. Περιεχόμενα

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

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

Γραφικά Περιβάλλοντα

9. Η βιβλιοθήκη Components του AWT

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

Περιεχόμενα. Πρόλογος 15

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

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

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

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

9.1 JFC Swing. 9.1 JFC Swing Java (GUI) Java. Java Foundation Classes (JFC) Swing GUI. JFC Card Pile GameFrame GUI

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Περιεχόμενα. Πρόλογος 15

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. α) Θέτοντας ιδιότητες του προγράµµατος β) Προσπελάζοντας τους πόρους του συστήµατος.

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

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

Certified Java Programmer (CJP)

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

Περιεχόμενα. Πρόλογος... 17

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

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

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

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

24. ΓΡΑΦΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιασύνδεση µε χρήστη: Swing ΙΙ. Window Listeners

Γραφικές ιεπαφές Χρήστη και Γραφικά

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

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

12.1 Εισαγωγή στο Swing

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

VK - 04/11/2016- [1]

Γενικά (για τις γραπτές εξετάσεις)

Wrapper Classes, Abstract Classes and Interfaces

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

New Project Windows Forms Applications

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

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

Λογισµικό (Software SW) Γλώσσες

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

ΑΛΛΗΛΕΠΙ ΡΑΣΗ ΑΝΘΡΩΠΟΥ ΜΗΧΑΝΗΣ 6 o ΕΡΓΑΣΤΗΡΙO

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

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

10.1 Γενικά για τα streams

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

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

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

ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ. Η Γλώσσα Προγραµµατισµού Java

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

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

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

ΚΕΦΑΛΑΙΑ attributes parameters

Αντικειμενοστρεφής Προγραμματισμός Τμήμα Εφαρμοσμένης Πληροφορικής Αναγκαιότητα Κλάσεων

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Αρχές Τεχνολογίας Λογισμικού

8. Μέθοδοι (Methods)

ΑΛΛΗΛΕΠΙ ΡΑΣΗ ΑΝΘΡΩΠΟΥ ΜΗΧΑΝΗΣ 2 o ΕΡΓΑΣΤΗΡΙO

Transcript:

Week 10: Graphical User Interfaces Έννοιες του προγραμματισμού ΓΠΕ [GUI] Διάλεξη #17: Εισαγωγή στα Γραφικά Περιβάλλοντα Επικοινωνίας [Graphical User Interfaces] Συστατικά [components] Διάταξη [layout] Προγραμματισμός χειρισμού γεγονότων [event-driven programming] Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 2 Αυτόνομα παράθυρα [frames] και συστατικά [components] Αυτόνομα παράθυρα [windows (frames)] Κατάλογος δυνατοτήτων [menus] Ετικέτες [labels] Ραδιοπλήκτρα [radio buttons] Πλαίσιο ελέγχου [checkboxes] Όρια [borders] Πλήκτρα [buttons] Προγραμματισμός χειρισμού γεγονότων [Event-driven programming] Στα κλασσικά προγράμματα (βασισμένα σε κείμενο) Το πρόγραμμα ελέγχει τη ροή της εκτέλεσης Το πρόγραμμα ελέγχει την ακολουθία εισόδου δεδομένων Τα προγράμματα ΓΠΕ [GUI] βασίζονται στο χειρισμό γεγονότων [event-driven] Στα βασισμένα σε χειρισμό γεγονότων προγράμματα Η είσοδος καθορίζει την ροή της εκτέλεσης Η ακολουθία της εισόδου δεδομένων ελέγχει την εκτέλεση του προγράμματος Ο κώδικας του χρήστη [user code] καλείται από τον κώδικα του συστήματος [system code] Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 3 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 4 Προγραμματισμός χειρισμού γεγονότων Βιβλιοθήκες ΓΠΕ [GUI] της Java Μια βιβλιοθήκη ΓΠΕ είναι ένα σύνολο από κλάσεις για την κατασκευή ΓΠΕ (παράθυρα, πλήκτρα, ράβδους κύλισης, καταλόγους δυνατοτήτων [menus], γεγονότα, κλπ.) Κώδικας συστήματος Οκώδικαςμας Η Java παρέχει τρείς βιβλιοθήκες ΓΠΕ: την AWT (Abstract Windowing Toolkit), την Swing και την JavaFX Η Swing είναι μία προέκταση (και αντικατάσταση ενός μέρους) της AWT Η JavaFX εισήχθει στην Java SE 7 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 5 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 6

AWT / Swing Στην Swing: - μερικά νέα συστατικά έχουν προστεθεί - μερικά AWT-συστατικά έχουν αντικατασταθεί - μερικά AWT -συστατικά συνεχίζουν να χρησιμοποιούνται AWT Swing+ AWT Τα συστατικά στοιχεία των AWT και Swing Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 7 Προγραμματισμός με την Swing Ο προγραμματισμός με την Swing (και γενικά ο ΓΠΕ προγραμματισμός) βασίζεται στην κληρονομικότητα Τα ΓΠΕ δημιουργούνται μέσω της επέκτασης και του συνδυασμού υπαρχόντων κλάσεων της Swing Παράδειγμα: Η κλάσηmyinterface επεκτείνει [extends] την JFrame, και χρησιμοποιεί τις JButton και TextField. Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 8 Το σύνολο αρχών [framework] της Swing Ένα αντικειμενοστρεφές πρόγραμμα Η Swing παρέχει ένα σύνολο κλάσεων και το πλαίσιο (κανόνες) χρήσης τους Οι κλάσεις της Swing συνδυάζονται με κώδικα-χρήστη για τη δημιουργία εφαρμογών ΓΠΕ Οκώδικας-χρήστη χρησιμοποιεί κλάσεις της βιβλιοθήκης για να κατασκευάσει το γραφικό περιβάλλον Ο κώδικας της βιβλιοθήκης καλεί τον κώδικα-χρήστη για το χειρισμό της εισόδου (πχ. πίεση πλήκτρου ποντικιού) Ένα αντικειμενοστρεφές πρόγραμμα αποτελείται από ένα σύνολο συνεργαζόμενων κλάσεων Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 9 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 10 Χρήση βιβλιοθηκών κλάσεων Βιβλιοθήκες κλάσεων Πλαίσια / σύνολα αρχών [Frameworks] Κλάσεις εφαρμογής Συχνά, κλάσεις βιβλιοθηκών χρησιμοποιούνται από τις κλάσεις της εφαρμογής (επαναχρησιμοποίηση κώδικα) Στα frameworks, ο κώδικας [πλαισίου] βιβλιοθήκης καλεί τον κώδικα του χρήστη Τύπος επαναχρησιμοποίησης 1: Η εφαρμογή καλεί κλάσεις βιβλιοθήκης Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 11 Τύπος επαναχρησιμοποίησης 2: Οκώδικαςπλαισίου καλεί τις κλάσεις εφαρμογής Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 12

Το παράδειγμα Zork2 Ο ακροατής γεγονότων [action/event listener] north west quit public void buttonpress You are in the C building public void keytyped public void menuselected Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 13 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 14 Κώδικας για Zork2: Η κλάση import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GameInterface extends JFrame implements ActionListener Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 15 Zork2: προσθήκη συστατικών JButton button; JPanel panel = new JPanel(); getcontentpane().add(panel); button = new JButton("West"); panel.add(button); button.addactionlistener(this); button = new JButton("North"); panel.add(button); button.addactionlistener(this); text = new JLabel("Welcome to Zork 2"); panel.add(text); pack(); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 16 Swing: Η δομή ενός αυτόνομου παράθυρου [frame] Διάταξη συστατικών στοιχείων Αυτόνομο παράθυρο [frame] Ράβδος τίτλου [title bar] Υποδοχείς [containers] περιοχή περιεχομένων [content pane(l)] Συστατικά στοιχεία [components] Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 17 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 18

Υποδοχείς [Containers] Οι υποδοχείς είναι συστατικά της Swing τα οποία περιέχουν άλλα συστατικά. Οι υποδοχείς μπορεί να περιέχουν άλλους υποδοχείς [nested containers]. Zork2: χειρισμός γεγονότων [handling events] public class GameInterface extends JFrame implements ActionListener Οι υποδοχείς χρησιμοποιούν ένα διαχειριστή διάταξης [LayoutManager] για να καθορίσουν τον τρόπο διάταξης των συστατικών. Ένα αυτόνομο παράθυρο [frame] της Swing περιλαμβάνει έναν υποδοχέα στην περιοχή περιεχομένων του [content pane]. public void actionperformed(actionevent event) String command = event.getactioncommand(); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 19 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 20 Δράσεις / γεγονότα [Actions] Ακροατής γεγονότων [Action listeners] Quit 1: το πλήκτρο 1 αποθηκεύει τον ακροατή [button stores listener] 2 4 3 ActionEvent GUI Event Framework actionperformed() ActionListener 2: ο χρήστης πιέζει το πλήκτρο 3: το πλήκτρο δημιουργεί αντικείμενο δράσης [button generates action object] actionperformed() ActionListene r 4: το πλήκτρο καλεί τον ακροατή γεγονότων με το αντικείμενο δράσης ως παράμετρο [button calls action listener with event object as parameter] GameInterface actionperformed() public void actionperformed(actionevent event); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 21 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 22 Zork2: Δράσεις public void actionperformed(actionevent event) String command = event.getactioncommand(); if(command.equals("quit")) System.exit(0); else String response = game.go(command); text.settext(response); Τερματισμός προγράμματος ΓΠΕ [GUI] Κλήση της System.exit(0) Έξοδος από τον βρόγχο χειρισμού γεγονότων και απελευθέρωση των δεσμευμένων πόρων (μνήμη) Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 23 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 24

Zork2: Εκκίνηση JLabel text; Game game; /** * Constructor for objects of class GameInterface */ public GameInterface() makeframe(); setvisible(true); game = new Game(); Διάταξη παράθυρου [window layout] Κάθε υποδοχέας [container] διαχειρίζεται τη διάταξη των συστατικών του Ο προγραμματιστής απλώς προσθέτει συστατικά, ο υποδοχέας φροντίζει για τη διάταξη τους Ουποδοχέας χρησιμοποιεί ένα διαχειριστή διάταξης για την διάταξη των συστατικών του Υπάρχουν διαθέσιμοι διάφοροι διαχειριστές διάταξης Η διάταξη των συστατικών ενός υποδοχέα μπορεί να προσδιοριστεί με την επιλογή του κατάλληλου διαχειριστή- διάταξης Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 25 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 26 Zork2: Διάταξη συστατικών Διαχειριστές Διάταξης [Layout managers] JPanel northpanel = new JPanel(); getcontentpane().add(northpanel, BorderLayout.NORTH); button = new JButton("West"); northpanel.add(button); button.addactionlistener(this); JPanel centerpanel = new JPanel(); getcontentpane().add(centerpanel, BorderLayout.CENTER); text = new JLabel("Welcome to Zork 3"); centerpanel.add(text); BorderLayout FlowLayout GridLayout ScrollPaneLayout (και άλλοι) Όλες οι διατάξεις/διαρρυθμίσεις [layouts] αφορούν συστατικά Τα συστατικά προσθέτονται/ανήκουν στον υποδοχέα [container], όχι στη διάταξη [layout] Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 27 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 28 FlowLayout Διατάσει τα συστατικά σε μία οριζόντια γραμμή BorderLayout Έχει έως πέντε συστατικά σε σταθερές θέσεις Όταν δεν χωρούν, τα συστατικά τοποθετούνται στη επόμενη γραμμή north west center south east Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 29 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 30

GridLayout Μεταβολή διαστάσεων παραθύρου Διατάσει τα συστατικά σε πλέγμα [grid] Όταν οι διαστάσεις ενός παραθύρου μεταβάλλονται, ο υποδοχέας (μαζί με τον διαχειριστή-διάταξης) αναδιατάσσει κατάλληλα τα συστατικά. Οι διαχειριστές διάταξης, συγκρινόμενοι με την διάταξη σταθερών συντεταγμένων, έχουν το πλεονέκτημα ότι μπορεί να ανταποκριθούν σε αλλαγές του μεγέθους της γραμματοσειράς, των διαστάσεων του παραθύρου, κλπ. Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 31 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 32 Κατάλογοι δυνατοτήτων [Menus] JMenuBar menubar = new JMenuBar(); JMenu menu = new JMenu("Edit"); JMenuItem item = new JMenuItem("Copy"); item.addactionlistener(this); menu.add(item) menu.addseparator(); item = new JMenuItem("Paste"); item.addactionlistener(this); menu.add(item) menubar.add(menu); setjmenubar(menubar); Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 33