Week 10: Graphical User Interfaces

Slides:



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

Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 6: Το Γραφικό Περιβάλλον Επικοινωνίας (Γ.Π.Ε.)
Οπτικός Προγραμματισμός ( C++ Builder 5.0 )
Λειτουργικό Σύστημα 2ο μέρος.
JAVA: AWT, EVENTS, APPLETS Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 10: Graphical User Interfaces Εβδομάδα 10: Εισαγωγή στα Γραφικά Περιβάλλοντα.
Αντικειμενοστρεφής Προγραμματισμός, Αντώνιος Συμβώνης, Πανεπιστήμιο Ιωαννίνων, Slide 1 Week 13: Review Εβδομάδα 13: Ανασκόπηση.
A’ ΛΥΚΕΙΟΥ ΛΥΚΕΙΟ ΚΟΚΚΙΝΟΧΩΡΙΩΝ Δημήτρης Μαυροβουνιώτης
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Γραφικά Ενδιάμεσα Χρήστη στην Java
GUI Components and Events JavaMethods An Introduction to Object-Oriented Programming TM.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING Επισκόπηση.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 6: Το Γραφικό Περιβάλλον Επικοινωνίας (Γ.Π.Ε.)
GTK - ΕΙΣΑΓΩΓΗ ΦΩΤΗΣ ΣΙΤΑΡΑΣ A.M: 1117.
ΕΣΔ 232: Οργάνωση δεδομένων στην Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Φόρμες Δημιουργία Περιεχομένου Ι.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Classes, Objects, και Events.
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ Παρουσίαση της LessTif  Μαραγκός ΘοδωρήςΑ.Μ. 557  Καρκάνης ΗλίαςΑ.Μ. 539.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Παρουσίαση της Motif Αναστάσιος Κρυσταλλίδης Α.Μ.: 776 Δημήτρης Μπαμπαλίκης Α.Μ.: 941 Επικοινωνία Ανθρώπου-Μηχανής.
Εισαγωγή στη .net Visual C++
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
Διαχείριση γεγονότων (events) Γεγονότα: Κλήσεις που παράγονται από γραφικά στοιχεία (Components) π.χ. click ποντικιού, μετακίνηση ποντικιού Ακρόαση-Διαχείριση.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Προγραμματισμός με GTK ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ» ΑΛΕΞΑΝΔΡΟΣ Κ. ΓΙΔΑΡΑΚΟΣ
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Κεφάλαιο 7 Abstract Window Toolkit (AWT). 2 Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και λειτουργία ενός γραφικού περιβάλλοντος εργασίας.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
Εισαγωγή στο GUIDE(Matlab) και εφαρμογές στα κυκλώματα Ραχμανίδου Χρυσή (Α.Ε.Μ. 2827) Επιβλέπων Καθηγητής: Μπαλουκτσής Αναστάσιος.
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Γραφικά με Java 1 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Κατανεμημένα Συστήματα
Κληρονομικότητα [inheritance]
Software Engineering for Web Applications
Προγραμματισμός κινητών συσκευών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Κατηγορίες Λογισμικού
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Swing II Εβδομάδα Νο. 6.
Προχωρημένος Προγραμματισμός
ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
Προγραμματισμός κινητών συσκευών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Το Γραφικό Περιβάλλον Επικοινωνίας
Λειτουργικά Συστήματα
Λειτουργικά Συστήματα
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Εξαιρέσεις [Exceptions]
Επικοινωνίας Java με Swing
Μεταγράφημα παρουσίασης:

Week 10: Graphical User Interfaces Διάλεξη #17: Εισαγωγή στα Γραφικά Περιβάλλοντα Επικοινωνίας [Graphical User Interfaces] Week 11: Applets time: 2 x one hour this lecture is done with live demo run in parallel topics: • frameworks, applets, browsers, HTML

Έννοιες του προγραμματισμού ΓΠΕ [GUI] Συστατικά [components] Διάταξη [layout] Προγραμματισμός χειρισμού γεγονότων [event-driven programming]

Αυτόνομα παράθυρα [frames] και συστατικά [components] [windows (frames)] Κατάλογος δυνατοτήτων [menus] Ετικέτες [labels] Ραδιοπλήκτρα [radio buttons] Πλαίσιο ελέγχου [checkboxes] Όρια [borders] Πλήκτρα [buttons]

Προγραμματισμός χειρισμού γεγονότων [Event-driven programming] Στα κλασσικά προγράμματα (βασισμένα σε κείμενο) Το πρόγραμμα ελέγχει τη ροή της εκτέλεσης Το πρόγραμμα ελέγχει την ακολουθία εισόδου δεδομένων Τα προγράμματα ΓΠΕ [GUI] βασίζονται στο χειρισμό γεγονότων [event-driven] Στα βασισμένα σε χειρισμό γεγονότων προγράμματα Η είσοδος καθορίζει την ροή της εκτέλεσης Η ακολουθία της εισόδου δεδομένων ελέγχει την εκτέλεση του προγράμματος Ο κώδικας του χρήστη [user code] καλείται από τον κώδικα του συστήματος [system code]

Προγραμματισμός χειρισμού γεγονότων Κώδικας συστήματος Ο κώδικας μας

Βιβλιοθήκες ΓΠΕ [GUI] της Java Μια βιβλιοθήκη ΓΠΕ είναι ένα σύνολο από κλάσεις για την κατασκευή ΓΠΕ (παράθυρα, πλήκτρα, ράβδους κύλισης, καταλόγους δυνατοτήτων [menus], γεγονότα, κλπ.) Η Java παρέχει τρείς βιβλιοθήκες ΓΠΕ: την AWT (Abstract Windowing Toolkit), την Swing και την JavaFX Η Swing είναι μία προέκταση (και αντικατάσταση ενός μέρους) της AWT Η JavaFX εισήχθει στην Java SE 7

Swing+ AWT AWT AWT / Swing Στην Swing: - μερικά νέα συστατικά έχουν προστεθεί - μερικά AWT-συστατικά έχουν αντικατασταθεί - μερικά AWT -συστατικά συνεχίζουν να χρησιμοποιούνται Swing+ AWT AWT Τα συστατικά στοιχεία των AWT και Swing

Προγραμματισμός με την Swing Παράδειγμα: Η κλάση MyInterface επεκτείνει [extends] την JFrame, και χρησιμοποιεί τις JButton και TextField.

Το σύνολο αρχών [framework] της Swing Ο κώδικας-χρήστη χρησιμοποιεί κλάσεις της βιβλιοθήκης για να κατασκευάσει το γραφικό περιβάλλον Ο κώδικας της βιβλιοθήκης καλεί τον κώδικα-χρήστη για το χειρισμό της εισόδου (πχ. πίεση πλήκτρου ποντικιού)

Ένα αντικειμενοστρεφές πρόγραμμα Ένα αντικειμενοστρεφές πρόγραμμα αποτελείται από ένα σύνολο συνεργαζόμενων κλάσεων

Χρήση βιβλιοθηκών κλάσεων Βιβλιοθήκες κλάσεων Συχνά, κλάσεις βιβλιοθηκών χρησιμοποιούνται από τις κλάσεις της εφαρμογής (επαναχρησιμοποί-ηση κώδικα) Τύπος επαναχρησιμοποίησης 1: Η εφαρμογή καλεί κλάσεις βιβλιοθήκης

Πλαίσια / σύνολα αρχών [Frameworks] Κλάσεις εφαρμογής Στα frameworks, ο κώδικας [πλαισίου] βιβλιοθήκης καλεί τον κώδικα του χρήστη Τύπος επαναχρησιμοποίησης 2: Ο κώδικας πλαισίου καλεί τις κλάσεις εφαρμογής

Το παράδειγμα Zork2

Ο ακροατής γεγονότων [action/event listener] public void buttonPress { ... } click click north west quit You are in the C building public void keyTyped { ... } click public void menuSelected { ... }

Κώδικας για Zork2: Η κλάση import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GameInterface extends JFrame implements ActionListener { ... }

Zork2: προσθήκη συστατικών JButton button; JPanel panel = new JPanel(); getContentPane().add(panel); button = new JButton("West"); panel.add(button); button.addActionListener(this); button = new JButton("North"); ... text = new JLabel("Welcome to Zork 2"); panel.add(text); pack();

Swing: Η δομή ενός αυτόνομου παράθυρου [frame] Ράβδος τίτλου [title bar] Αυτόνομο παράθυρο [frame] περιοχή περιεχομένων [content pane(l)]

Διάταξη συστατικών στοιχείων Υποδοχείς [containers] Συστατικά στοιχεία [components]

Υποδοχείς [Containers] Οι υποδοχείς είναι συστατικά της Swing τα οποία περιέχουν άλλα συστατικά. Οι υποδοχείς μπορεί να περιέχουν άλλους υποδοχείς [nested containers]. Οι υποδοχείς χρησιμοποιούν ένα διαχειριστή διάταξης [LayoutManager] για να καθορίσουν τον τρόπο διάταξης των συστατικών. Ένα αυτόνομο παράθυρο [frame] της Swing περιλαμβάνει έναν υποδοχέα στην περιοχή περιεχομένων του [content pane].

Zork2: χειρισμός γεγονότων [handling events] public class GameInterface extends JFrame implements ActionListener { ... public void actionPerformed(ActionEvent event) String command = event.getActionCommand(); }

Δράσεις / γεγονότα [Actions] Quit 3 ActionEvent 2 1: το πλήκτρο αποθηκεύει τον ακροατή [button stores listener] 2: ο χρήστης πιέζει το πλήκτρο 3: το πλήκτρο δημιουργεί αντικείμενο δράσης [button generates action object] 4: το πλήκτρο καλεί τον ακροατή γεγονότων με το αντικείμενο δράσης ως παράμετρο [button calls action listener with event object as parameter] 1 4 ActionListener actionPerformed()

Ακροατής γεγονότων [Action listeners] GUI Event Framework actionPerformed() ActionListener GameInterface actionPerformed() 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);

Τερματισμός προγράμματος ΓΠΕ [GUI] Κλήση της System.exit(0) Έξοδος από τον βρόγχο χειρισμού γεγονότων και απελευθέρωση των δεσμευμένων πόρων (μνήμη)

Zork2: Εκκίνηση JLabel text; Game game; /** * Constructor for objects of class GameInterface */ public GameInterface() { makeFrame(); setVisible(true); game = new Game(); }

Διάταξη παράθυρου [window layout] Κάθε υποδοχέας [container] διαχειρίζεται τη διάταξη των συστατικών του Ο προγραμματιστής απλώς προσθέτει συστατικά, ο υποδοχέας φροντίζει για τη διάταξη τους Ο υποδοχέας χρησιμοποιεί ένα διαχειριστή διάταξης για την διάταξη των συστατικών του Υπάρχουν διαθέσιμοι διάφοροι διαχειριστές διάταξης Η διάταξη των συστατικών ενός υποδοχέα μπορεί να προσδιοριστεί με την επιλογή του κατάλληλου διαχειριστή- διάταξης

Zork2: Διάταξη συστατικών 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);

Διαχειριστές Διάταξης [Layout managers] BorderLayout FlowLayout GridLayout ScrollPaneLayout ...(και άλλοι) Όλες οι διατάξεις/διαρρυθμίσεις [layouts] αφορούν συστατικά Τα συστατικά προσθέτονται/ανήκουν στον υποδοχέα [container], όχι στη διάταξη [layout]

FlowLayout Διατάσει τα συστατικά σε μία οριζόντια γραμμή Όταν δεν χωρούν, τα συστατικά τοποθετούνται στη επόμενη γραμμή

BorderLayout north west center east south Έχει έως πέντε συστατικά σε σταθερές θέσεις north west center east south

GridLayout Διατάσει τα συστατικά σε πλέγμα [grid]

Μεταβολή διαστάσεων παραθύρου Όταν οι διαστάσεις ενός παραθύρου μεταβάλλονται, ο υποδοχέας (μαζί με τον διαχειριστή-διάταξης) αναδιατάσσει κατάλληλα τα συστατικά. Οι διαχειριστές διάταξης, συγκρινόμενοι με την διάταξη σταθερών συντεταγμένων, έχουν το πλεονέκτημα ότι μπορεί να ανταποκριθούν σε αλλαγές του μεγέθους της γραμματοσειράς, των διαστάσεων του παραθύρου, κλπ.

Κατάλογοι δυνατοτήτων [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"); ... menubar.add(menu); setJMenuBar(menubar);