Week 10: Graphical User Interfaces

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

Week 12: GUIs with Swing

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

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

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

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

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

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

8.1 Top-Level Swing Containers και Swing Components

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Certified Java Programmer (CJP)

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

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

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

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

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

Week. 6: Java Collections

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

VK - 04/11/2016- [1]

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

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

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

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

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

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

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

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

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

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

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

New Project Windows Forms Applications

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

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

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

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

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

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

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

3D FLASH ANIMATOR (3DFA)

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

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

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

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

ηµιουργία ιαλογικών Προγραµµάτων για το Web

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΑ attributes parameters

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

Ask1, Ask2, Ask3. private void jbutton1actionperformed(java.awt.event.actionevent evt) { jlabel1.settext( "You pressed the 1st button" ); }

1.1.1 Το περιβάλλον εργασίας. Περιοχές της οθόνης και λειτουργία τους

Από τη UML στον Κώδικα. Μέρος Β

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

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Transcript:

Week 10: Graphical User Interfaces Έννοιες του προγραµµατισµού ΓΠΕ [GUI] Εβδοµάδα 10: Εισαγωγή στα Γραφικά Περιβάλλοντα Επικοινωνίας [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 Κώδικας συστήµατος Η Swing είναι µία προέκταση (και αντικατάσταση ενός µέρους) της AWT Ο κώδικας µας Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, 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 Το παράδειγµα Zork2 Η Swing παρέχει ένα σύνολο κλάσεων και το πλαίσιο (κανόνες) χρήσης τους Οι κλάσεις της Swing συνδυάζονται µε κώδικα-χρήστη για τη δηµιουργία εφαρµογών ΓΠΕ Ο κώδικας-χρήστη χρησιµοποιεί κλάσεις της βιβλιοθήκης για να κατασκευάσει το γραφικό περιβάλλον Ο κώδικας της βιβλιοθήκης καλεί τον κώδικα-χρήστη για το χειρισµό της εισόδου (πχ. πίεση πλήκτρου ποντικιού) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 9 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 10 Ο ακροατής γεγονότων [action/event listener] Κώδικας για Zork2: Η κλάση north west quit public void buttonpress import java.awt.*; import java.awt.event.*; import javax.swing.*; You are in the C building public void keytyped public void menuselected public class GameInterface extends JFrame implements ActionListener Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 11 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 12

Zork2: προσθήκη συστατικών Swing: Η δοµή ενός αυτόνοµου παράθυρου [frame] JButton button; JPanel panel = new JPanel(); getcontentpane().add(panel); button = new JButton("West"); panel.add(button); button = new JButton("North"); panel.add(button); text = new JLabel("Welcome to Zork 2"); panel.add(text); pack(); Αυτόνοµο παράθυρο [frame] Ράβδος τίτλου [title bar] περιοχή περιεχοµένων [content pane(l)] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 13 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 14 ιάταξη συστατικών στοιχείων Συστατικά στοιχεία [components] Υποδοχείς [containers] Υποδοχείς [Containers] Οι υποδοχείς είναι συστατικά της Swing τα οποία περιέχουν άλλα συστατικά. Οι υποδοχείς µπορεί να περιέχουν άλλους υποδοχείς [nested containers]. Οι υποδοχείς χρησιµοποιούν ένα διαχειριστή διάταξης [LayoutManager] για να καθορίσουν τον τρόπο διάταξης των συστατικών. Ένα αυτόνοµο παράθυρο [frame] της Swing περιλαµβάνει έναν υποδοχέα στην περιοχή περιεχοµένων του [content pane]. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 15 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 16 Zork2: χειρισµός γεγονότων [handling events] ράσεις / γεγονότα [Actions] public class GameInterface extends JFrame implements ActionListener Quit 1: το πλήκτρο 1 αποθηκεύει τον ακροατή [button stores listener] 2 4 3 ActionEvent public void actionperformed(actionevent event) String command = event.getactioncommand(); 2: ο χρήστης πιέζει το πλήκτρο 3: το πλήκτρο δηµιουργεί αντικείµενο δράσης [button generates action object] ActionListener 4: το πλήκτρο καλεί τον ακροατή γεγονότων µε το αντικείµενο δράσης ως παράµετρο [button calls action listener with event object as parameter] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 17 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 18

Ακροατής γεγονότων [Action listeners] GUI Event Framework ActionListener GameInterface public void actionperformed(actionevent event); 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); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 19 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 20 Τερµατισµός προγράµµατος ΓΠΕ [GUI] Zork2: Εκκίνηση Κλήση της System.exit(0) Έξοδος από τον βρόγχο χειρισµού γεγονότων και απελευθέρωση των δεσµευµένων πόρων (µνήµη) JLabel text; Game game; /** * Constructor for objects of class GameInterface */ public GameInterface() makeframe(); setvisible(true); game = new Game(); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 21 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 22 ιάταξη παράθυρου [window layout] Κάθε υποδοχέας [container] διαχειρίζεται τη διάταξη των συστατικών του Ο προγραµµατιστής απλώς προσθέτει συστατικά, ο υποδοχέας φροντίζει για τη διάταξη τους Ο υποδοχέας χρησιµοποιεί ένα διαχειριστή διάταξης για την διάταξη των συστατικών του Υπάρχουν διαθέσιµοι διάφοροι διαχειριστές διάταξης Zork2: ιάταξη συστατικών JPanel northpanel = new JPanel(); getcontentpane().add(northpanel, BorderLayout.NORTH); button = new JButton("West"); northpanel.add(button); JPanel centerpanel = new JPanel(); getcontentpane().add(centerpanel, BorderLayout.CENTER); text = new JLabel("Welcome to Zork 3"); centerpanel.add(text); Η διάταξη των συστατικών ενός υποδοχέα µπορεί να προσδιοριστεί µε την επιλογή του κατάλληλου διαχειριστήδιάταξης Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 23 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 24

ιαχειριστές ιάταξης [Layout managers] BorderLayout FlowLayout GridLayout ScrollPaneLayout (και άλλοι) FlowLayout ιατάσει τα συστατικά σε µία οριζόντια γραµµή Όταν δεν χωρούν, τα συστατικά τοποθετούνται στη επόµενη γραµµή Όλες οι διατάξεις/διαρρυθµίσεις [layouts] αφορούν συστατικά Τα συστατικά προσθέτονται/ανήκουν στον υποδοχέα [container], όχι στη διάταξη [layout] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 25 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 26 BorderLayout GridLayout Έχει έως πέντε συστατικά σε σταθερές θέσεις ιατάσει τα συστατικά σε πλέγµα [grid] north west center south east Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 27 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 28 Μεταβολή διαστάσεων παραθύρου Κατάλογοι δυνατοτήτων [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 29 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 30