Week 12: GUIs with Swing

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

Week 10: Graphical User Interfaces

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

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

8.1 Top-Level Swing Containers και Swing Components

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

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

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

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

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

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

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

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

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

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

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

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

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

Certified Java Programmer (CJP)

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

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

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

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

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

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

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

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

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

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

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

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

Προγραμματισμός ΙΙ (Java) 8-9. Γραφικές Διεπαφές

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

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

Εισαγωγικές έννοιες. Ιωάννης Γ. Τσούλος 2014

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

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

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

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Η ιευρυµένη Επιχείρηση Ενότητα Ηλεκτρονικής Μάθησης. «CourseLab» 3ο Φροντιστήριο. Ιωάννα Ταλάντη Υπ. ιδάκτωρ, Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας

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

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

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

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

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

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Επαναληπτικό φύλλο εργασίας 07/04/2009

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

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

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

VK - 04/11/2016- [1]

Week. 6: Java Collections

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

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

Week 7: Java Collection Classes

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

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

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

(2) Thread Thread. Runnable. ( ) Java. Sample91. Thread Thread ) Thread. Runnable. run() / run() Runnnale ( ) MyRun implements Runnable Runnable

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Εκφωνήσεις ασκήσεων εργαστηρίου 2 (java threads)

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Εισαγωγή στη γλώσσα προγραμματισμού Java 69

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

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

ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης. Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 2 Σεπτεµβρίου 2005

Java ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Paul Deitel. Harvey Deitel. Εκδόσεις: Μ. Γκιούρδας ΟΓ ΟΗ ΕΚ ΟΣΗ. Deitel & Associates, Inc. Deitel & Associates, Inc.

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

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

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

Transcript:

Week 12: GUIs with Swing Προγραµµατισµός ΓΠΕ: ανασκόπηση Εισαγόµενα πακέτα Java Εβδοµάδα 12: Γραφικά Περιβάλλοντα Επικοινωνίας Java µε Swing «Στήσιµο»του αυτόνοµου παράθυρου [frame] Συστατικά [components] Υποδοχείς [containers] δευτέρου επιπέδου ιάταξη [layout] Χειρισµός γεγονότων [events] Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 2 Εισαγόµενα πακέτα «Στήσιµο» του αυτόνοµου παράθυρου import javax.swing.*; import java.awt.*; import java.awt.event.*; JFrame frame = new JFrame("SwingApplication"); Container contentpane = frame.getcontentpane(); contentpane.add(, BorderLayout.CENTER); //Finish setting up the frame, and show it. frame.addwindowlistener(); frame.pack(); frame.setvisible(true); Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 3 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 4 Άλλοι υποδοχείς πρώτου επιπέδου Πλήκτρα και ετικέτες [Buttons & Labels] Αυτόνοµο παράθυρο (κλάση JFrame) JLabel label = new JLabel( This is a label."); Παράθυρα διαλόγου (κλάση JDialog και υποκλάσεις) Χρησιµοποιήστε την κλάση JOptionPane για τα περισσότερα παράθυρα διαλόγου JButton button = new JButton("I'm a Swing button!"); button.setmnemonic(keyevent.vk_i); button.addactionlistener(an action listener); Applet (κλάση Applet και JApplet) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 5 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 6

Αλλά συστατικά Συστατικά: ετικέτα Ετικέτα [Label] Πλήκτρο [Button] Στοιχείο καταλόγου [MenuItem] Πεδίο κειµένου [TextField] Περιοχή κειµένου [TextArea] Κατάλογος [List] Συνδυασµός πλήκτρουκαταλόγου [ComboBox] Κυλιόµενος επιλογέας [Slider] Ράβδος προόδου [ProgressBar] Πίνακας [Table] ένδρο [Tree] Επιλογέας αρχείου [FileChooser] Label, JLabel Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 7 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 8 Συστατικά: Πλήκτρο Συστατικά: Στοιχεία καταλόγου Button, JΒutton MenuItem, JMenuItem Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 9 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 10 Συστατικά: Πεδίο κειµένου Συστατικά: Περιοχή κειµένου TextField, JTextField TextArea, JTextArea Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 11 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 12

Συστατικά: Κατάλογος Συστατικά: Συνδυασµός πλήκτρου-καταλόγου List, JList JComboBox Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 13 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 14 Συστατικά: Κυλιόµενος επιλογέας Συστατικά: Ράβδος προόδου JSlider JProgressBar Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 15 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 16 Συστατικά: Πίνακας Συστατικά: ένδρο JTable JTree Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 17 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 18

Συστατικά: Επιλογέας αρχείου Υποδοχείς δευτέρου επιπέδου Περιοχή περιεχοµένων [Panel] (γενικής χρήσης) ScrollPane SplitPane FileDialog, JFileChooser TabbedPane Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 19 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 20 Υποδοχείς: ScrollPane Υποδοχείς: SplitPane ScrollPane, JScrollPane JSplitPane Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 21 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 22 Υποδοχείς: TabbedPane ιαχειριστές ιάταξης [Layout managers] BorderLayout BoxLayout [Swing] FlowLayout JTabbedPane Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 23 GridBagLayout GridLayout Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 24

ιάταξη [Layout] Ρύθµιση/εγκατάσταση του διαχειριστή διάταξης JPanel pane = new JPanel(); pane.setlayout(new BorderLayout()); ιάταξη: Όρια [Borders] pane.setborder(borderfactory.createemptyborder( 30, //top 30, //left 10, //bottom 30) //right ); Άλλοι τύποι ορίων BevelBorder LineBorder EtchedBorder CompoundBorder Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 25 Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 26 Χειρισµός γεγονότων [Handling Events] ράσεις που καταλήγουν σε γεγονότα Ο χρήστης πιέζει πλήκτρο, πιέζει το «Return» ενώ πληκτρολογεί σε πεδίο κειµένου, ή επιλέγει ένα στοιχείο καταλόγου [menu item] Κλείσιµο αυτόνοµου παράθυρου [frame] Πίεση πλήκτρου ποντικιού ενώ ο δροµέας [cursor] βρίσκεται πάνω από ένα συστατικό Κίνηση του δροµέα πάνω από ένα συστατικό Συστατικό γίνεται ορατό Συστατικό έχει «εστίαση πληκτρολογίου» [keyboard focus] Η επιλογή από πίνακα ή λίστα µεταβάλλεται Τύπος ακροατή [Listener] ActionListener WindowListener MouseListener MouseMotionListener ComponentListener FocusListener ListSelectionListener Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 27 Παράδειγµα: MouseListener public interface MouseListener extends EventListener void mouseclicked(mouseevent) Καλείται µόλις ο χρήστης πιέσει [clicks] στο ακροαζόµενο συστατικό. void mouseentered(mouseevent) Καλείται µόλις ο δροµέας εισέλθει στα όρια του ακροαζόµενου συστατικού. void mouseexited(mouseevent) Καλείται µόλις ο δροµέας εξέλθει από τα όρια του ακροαζόµενου συστατικού. void mousepressed(mouseevent) Καλείται µόλις ο χρήστης πιέσει [presses] ένα πλήκτρο ποντικιού ενώ ο δροµέας βρίσκεται πάνω από το ακροαζόµενο συστατικό. void mousereleased(mouseevent) Καλείται µόλις ο χρήστης αποσυµπιέσει [releases] ένα πλήκτρο ποντικιού µετά από την πίεση του πάνω από το ακροαζόµενο συστατικό.. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 28 MouseEvent methods Κάθε µέθοδος σχετική µε γεγονότα που αφορούν το ποντίκι (mouse event method) έχει µία παράµετρο: ένα αντικείµενο τύπου MouseEvent. Η κλάση MouseEvent class ορίζει τις παρακάτω µεθόδους: int getclickcount() Επιστρέφει τον αριθµό των «γρήγορων» διαδοχικών «κλικ» του ποντικιού από τον χρήστη. Π.χ. επιστρέφει 2 για διπλό «κλικ». int getx() int gety() Point getpoint() Επιστρέφει την (x,y) συντεταγµένη όπου συνέβη το γεγονός (σχετικά µε τοη συστατικό που προκάλεσε το γεγονός). boolean ispopuptrigger() Returns true if the mouse event should cause a popup menu to appear. Because popup triggers are platform dependent, if your program uses popup menus, you should call ispopuptrigger for all mouse-pressed and mouse-released events fired by components over which the popup can appear. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 29 Ο κώδικας του MouseListener addmouselistener(this); public void mousepressed(mouseevent e) public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mouseclicked(mouseevent e) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 30

Ακροατές [listeners] και προσαρµογείς [adapters] Οι ακροατές [listeners] είναι διαπροσωπίες [interfaces] Όταν υλοποιούµε έναν ακροατή όλες οι µέθοδοι της διαπροσωπίας πρέπει να υλοποιηθούν Όταν δεν χρειάζονται όλες, είναι βολικό να χρησιµοποιήσουµε έναν προσαρµογέα [adapter] Οι προσαρµογείς είναι κλάσεις οι οποίες υλοποιούν όλες τις µεθόδους του ακροατή ως «άδειες» µεθόδους. Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 31 Παράδειγµα: MouseAdapter public class MouseAdapter implements MouseListener public void mousepressed(mouseevent e) public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mouseclicked(mouseevent e) Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 32 Τα νήµατα εκτέλεσης [threads] της Swing main thread GUI event handler thread Χειρισµός γεγονότων screen painter thread Απεικόνιση στην οθόνη Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 33