1 / 54

Java AWT Toolkit for GUI Development

The AWT Abstract Window Toolkit includes classes for creating and managing a graphical user interface. Key classes: Components, Event classes, Event listeners, Containers, UI elements. Start your Java GUI projects easily with these essential classes.

rsimon
Download Presentation

Java AWT Toolkit for GUI Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και λειτουργία ενός γραφικού περιβάλλοντος εργασίας Είδη κλάσεων του πακέτου AWT: 1.Components: Κλάσεις δημιουργίας γραφικών εργαλείων (κουμπιά, πεδία εισαγωγής κειμένου, λίστες κλπ) 2. Event classes: Κλάσεις που παρέχουν πληροφορίες σχετικές με γεγονότα (κίνηση ποντικιού, πάτημα πλήκτρων) 3. Event listeners: Ακροατές γεγονότων. Περιέχουν μεθόδους που εκτελούνται κάθε φορά που εμφανίζεται το γεγονός που εκπροσωπούν

  2. Components, Containers • Components: Στοιχεία που προσδίδουν σε μια εφαρμογή τη λειτουργικότητα ενός graphical user interface (πχ buttons, textfields, checkboxes). • Containers: Κατηγορία components τα οποία εμπεριέχουν components στην περιοχή τουςκαι τα διατάσσουν βάσει καθορισμένων προτύπων διάταξης (layouts). • Ενα container μπορεί να περιέχει και containers στην επιφάνειά του.

  3. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet Ιεραρχική διάταξη components-containers

  4. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice Checkbox List GridLayout Container Panel java.applet.Applet Label

  5. Label • Label: Απεικονίζει μη τροποποιήσιμο κείμενο Κατασκευαστές: Label ( ); Label ( String labelContent ); Label ( String labelContent, int alignment ); labelContent: Το μη τροποοποιήσιμο string του label alignment: η στοιχιση του string στο διαθέσιμο για το label διάστημα Σταθερές: LEFT, RIGHT, CENTER

  6. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet Button

  7. Button • Εκτελούν κώδικα όταν επιλεγούν με mouse click • Κατασκευαστές: Button ( ); Button ( String buttonLabel ); • Μέθοδοι: void setLabel ( String buttonLabel ); String getLabel ( );

  8. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet Textfield

  9. TextField • Component για την εισαγωγή strings από το χρήστη Εάν είναι μη τροποποιήσιμα από το χρήστη απλώς απεικονίζουν string output. • Κατασκευαστές: • TextField ( ); • TextField ( int columns ); • TextField ( String text ); • TextField ( String text, int columns ); • Μέθοδοι: • void setText ( String text );

  10. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet TextArea

  11. TextArea • TextField πολλαπλών γραμμών • Κατασκευαστές: • TextArea ( ); • TextArea ( String text ); • TextArea ( String text, int rows, int columns ); • TextArea ( String text, int rows, int columns , int scrollbars ); • String text: αρχικά παρουσιαζόμενο κείμενο • Int rows: κατακόρυφο μέγεθος σε γραμμές • Int columns: οριζόντιο μέγεθος σε χαρακτήρες • Int scrollbars:SCROLLBARS_BOTH, SCROLLBARS_HORIZONTAL_ONLYSCROLLBARS_NONESCROLLBARS_VERTICAL_ONLY

  12. TextArea • Μέθοδοι • void append ( String str )

  13. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet Choice

  14. Choice • Λίστα στοιχείων από τα οποία ο χρήστης επιλέγει μόνο ένα • Κατασκευαστής Choice( ); • Μέθοδοι: void add(String str): Προσθήκη επιλογής με το Label str void remove(int position):Αφαιρεί το στοιχείο που βρίσκεται στη θέση position void remove(String str):Ομοίως, βάσει του ονόματος του στοιχείου void select(String str)επιλέγει το στοιχείο με το όνομα str int getSelectedIndex( ); Επιστρέφει το δείκτη του επιλεγέντος στοιχείου String getSelectedItem( ); Επιστρέφει το όνομα του επιλεγέντος στοιχείου String getItem(int index); Επιστρέφει το όνομα του στοιχείου με δείκτη index.

  15. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet Checkbox

  16. Checkbox • Boolean component. Χρησιμοποιείται για την ενεργοποίηση ή απενεργοποίηση μιας λειτουργίας. • Κατασκευαστές: • Checkbox ( ); • Checkbox ( String label, boolean state ) • Checkbox ( String label, boolean state, CheckboxGroup group) • Μέθοδοι: • boolean getState ( ) • void setState ( boolean state ); • String getLabel ( ); • void setLabel ( String str );

  17. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet List

  18. List • Προσφέρει την επιλογή ενός η περισσοτέρων στοιχείων • Κατασκευαστές: List ( ); List ( int rows ) List ( int rows, boolean multipleMode ) • Μέθοδοι: void add ( String itemName ):Προσθέτει επιλογή με το όνομα itemName void add ( String itemName, int index ):Προσθέτει επιλογή με την ετικέτα itemName στη θέση με δείκτη index void remove ( String itemName ):Αφαιρεί την επιλογή με την ονομασία itemName void remove ( int position ):Αφαιρεί την επιλογή της θέσης με δείκτη position String getSelectedItem ( ):Επιστρέφει το String της επιλογής του χρήστη String [ ] getSelectedItem ( ):Επιστρέφει array με τα Strings της επιλογής του χρήστη int getSelectedIndex ( ):Επιστρέφει το δείκτη του επιλεγέντος στοιχείου int[ ] getSelectedIndexes ( ):Επιστρέφει array με τους δείκτες των επιλεγόμενων στοιχείων

  19. Containers • Κλάσεις που παρέχουν διάστημα για την τοποθέτηση components • Η προσθήκη ενός component στη γραφική επιφάνεια ενός container γίνεται με τη χρήση της μεθόδου add(); • container.add(component,…extra arguments); • Η add δέχεται επιπλέον ορίσματα ανάλογα μετον τρόπο διευθέτησης των components (layout) που έχει επιλεγεί για το τρέχον container.

  20. Panel • Η βασική κλάση Container. • Κατασκευαστές: Panel( ) Panel( LayoutManager layout ): Αρχικοποιεί το Panel και διατάσσει τα προστιθέμενα components σύμφωνα με το δοθέν layout (βλ. Layouts). • Η κλάση Applet είναι υποκλάση της Panel συνεπώς μπορεί να καλέσει τις μεθόδουςπου περιλαμβάνονται σε ένα container.

  21. ScrollPane • Container το οποίο μπορεί να εμφανίσει οριζόντια και κατακόρυφη γραμμή κύλισης σε περίπτωση που τα προστιθέμενα components δε χωράνε στην επιφάνειά του. • Κατασκευαστές: ScrollPane( ); ScrollPane( int scrollbarDisplayPolicy ) ; • scrollbarDisplayPolicy: καθορίζει κανόνες εμφάνισης γραμμών κύλισης (Σταθερές: SCROLLBARS_ALWAYS, SCROLLBARS_AS_NEEDED, SCROLLBARS_NEVER)

  22. Layouts • Προτυποποιημένα templates διάταξης των στοιχείων μέσα σε ένα container • Καθορίζουν τη θέση των Components και των containers πάνω στηδιαθέσιμη γραφική επιφάνεια του φιλοξενούντος container. • Το Layout ενός container καθορίζεται μέσω της μεθόδου: public final void setLayout( LayoutManager layout ); που ορίζεται σε όλες τις κλάσεις-containers.

  23. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet FlowLayout

  24. FlowLayout • Διατάσσει τα προστιθέμενα components σειριακά • Είναι το defaultLayout. • Κατασκευαστής: FlowLayout(); • Προσθήκη component σε container με FlowLayout: container.add(component);

  25. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet BorderLayout

  26. BorderLayout Περιλαμβάνει πέντε προσανατολισμούς: “North”,”South”,”West”,”East”,”Center” Κατασκευαστής: BorderLayout(); Προσθήκη component σε container με BorderLayout Container.add(“Orientation”,component);

  27. java.lang.Object CheckboxGroup Label Button Component TextField TextComponent TextArea FlowLayout Choice BorderLayout Checkbox List GridLayout Container Panel java.applet.Applet GridLayout

  28. GridLayout Διαχωρίζει τη διαθέσιμη επιφάνεια σε ισομερείς ορθογώνιες περιοχές. GridLayout(int rows,int columns); Προσθήκη component comp σε Container con με GridLayout: container.add(component); Τα components τοποθετούνται σε σειρά από αριστερά προς τα δεξιά και από επάνω προς τα κάτω.

  29. Event Classes • Κλάσεις που εκπροσωπούν γεγονότα. • Για κάθε τύπο event ορίζεται και διαφορετική κλάση. Πχ events σχετικά με το πληκτρολόγιο και events σχετικά με το ποντίκι εκπροσωπούνται από διαφορετικές κλάσεις. • Κάθε event class περιλαμβάνει τις κατάλληλες μεθόδους για τον προσδιορισμό χαρακτηριστικών που περιγράφουν το γεγονός. Π.χ. μέσω της κλάσης MouseEvent μπορούμε να βρούμε σε ποιο σημείο μιας επιφάνειας ο χρήστηςέκανε mouse click και μέσω της κλάσης KeyEvent ποιο κουμπί του πληκτρολογίου πατήθηκε. • Κάθε component παράγει συγκεκριμένα events.

  30. java.lang.Object InputEvent KeyEvent ComponentEvent java.util.EventObject MouseEvent ItemEvent java.awt.AWTEvent ContainerEvent ActionEvent FocusEvent PaintEvent AdjustmentEvent WindowEvent Ιεραρχία EventClasses

  31. java.lang.Object InputEvent KeyEvent ComponentEvent java.util.EventObject MouseEvent ItemEvent java.awt.AWTEvent ContainerEvent ActionEvent FocusEvent PaintEvent AdjustmentEvent WindowEvent KeyEvent

  32. KeyEvent • Παράγεται από ολα τα components • Μέθοδοι: char getKeyChar():Επιστρέφει το χαρακτήρα που αντιστοιχεί στο πλήκτρο που πατήθηκε. Μόνο για κουμπιά που αντιστοιχούν σε χαρακτήρες. Int getKeyCode():Επιστρέφει τον κωδικό (VK) του πλήκτρουπου πατήθηκε (Οι virtual codes των πλήκτρων ορίζονται ως σταθερές-μέλη στην κλάση KeyEvent). String getKeyText( ):Επιστρέφει ως string το όνομα του πλήκτρου που πατήθηκε. Περιλαμβάνονται και τα πλήκτρα ελέγχου, πχ για το function key F1 επιστρέφει “F1”;

  33. java.lang.Object InputEvent KeyEvent ComponentEvent java.util.EventObject MouseEvent ItemEvent java.awt.AWTEvent ContainerEvent ActionEvent FocusEvent PaintEvent AdjustmentEvent WindowEvent MouseEvent

  34. MouseEvent • Παράγεται από όλα τα components. • Μέθοδοι: int getButton( ):Επιστρέφει τον κωδικό του πλήκτρου του ποντικιού που πατήθηκε. Επιστρεφόμενες σταθερές: BUTTON_1,BUTTON_2,BUTTON_3 int getX( ):Επιστρέφει τη συντεταγμένη X του component όπου προκλήθηκε το MouseEvent int getY( ):Επιστρέφει τη συντεταγμένη Y του component όπου προκλήθηκε το MouseEvent.

  35. java.lang.Object InputEvent KeyEvent ComponentEvent java.util.EventObject MouseEvent ItemEvent java.awt.AWTEvent ContainerEvent ActionEvent FocusEvent PaintEvent AdjustmentEvent WindowEvent ItemEvent

  36. ItemEvent • Παράγεται κατά την επιλογή ενός στοιχείου σε Checkboxes, Lists, Choices. • int getStateChange( ):Επιστρέφει τιμή εξαρτώμενη από την αλλαγή κατάστασηςσε επιλογές. Επιστρεφόμενες σταθερές: SELECTED, DESELECTED

  37. Ακροατές γεγονότων • Κλάσεις που αναλαμβάνουν τη διαχείριση των γεγονότων • Κάθε κλάση ειδικεύεται στη διαχείριση συγκεκριμένου γεγονότος Πχ KeyEvent ήActionEvent • Κάθε κλάση, ανάλογα με τα γεγονός που διαχειρίζεται, υλοποιεί και ένα αντίστοιχο interface. Πχ. κλάση που διαχειρίζεται MouseEventsυλοποιεί το interface MouseListener • Σε κάθε component ή container αντιστοιχίζουμε διαχειριστή γεγονότων με μία μέθοδο του της μορφής: addEventListener(interface EventListener) Πχ addMouseListener(MouseListener e) • Σε κάθεcomponent (Button, TextField, List κλπ) μπορεί να ανατεθεί ακροατής ο οποίος διαχειρίζεται ένα κοινό για τα components γεγονός με διαφορετικό τρόποσε κάθε περίπτωση.

  38. Μερικές μέθοδοι καταχώρησης κλάσεων-ακροατών γεγονότων • void addKeyListener( interface KeyListener ) Περιέχεται σε όλα τα components-containers. • void addMouseListener( interface MouseListener ) Περιέχεται σε όλα τα components-containers. • void addMouseMotionListener( interface MouseMotionListener ) Περιέχεται σε όλα τα components-containers. • void addActionListener( interface ActionListener ) Περιέχεται στα components: Button,TextField,List. • void addTextListener( interface TextListener ) Περιέχεται στα components: TextField, TextArea. • void addItemListener( interface ItemListener ) Περιέχεται στα components: Checkbox, Choice, List.

  39. Adapter Classes • AdapterClasses: Προϋπάρχουσες κλάσεις που περιέχουν όλες τις συναρτήσειςενος event listener interface με κενό σώμα. • Ο προγραμματισής, αντί να ορίσει εκ του μηδενός μια κλάση ακροατή και να ορίσει ολες τις μεθόδους του αντίστοιχου interface,παρακάμπτειτις μεθόδους της adapter κλάσης. • Πχ η κλάσηMouseAdapterπεριέχει όλες τις μεθόδους- με κενό σώμα - που απαιτούνται ώστε μια κλάση να υλοποιεί το interface mouseListener.

  40. KeyListener MouseListener java.lang.Object MouseMotionListener java.util.EventListener ActionListener TextListener ItemListener ComponentListener ContainerListener WindowListener FocusListener AdjustmentListener Ιεραρχική δομή Listener interfaces

  41. KeyListener MouseListener java.lang.Object MouseMotionListener java.util.EventListener ActionListener TextListener ItemListener ComponentListener ContainerListener WindowListener FocusListener AdjustmentListener Interface KeyListener

  42. Interface KeyListener • Κλάσεις-διαχειριστές που το υλοποιούν διαχειρίζονται KeyEvents. • Μέθοδοι: void keyTyped ( KeyEvent e ):Εκτελείται όποτε ο χρήστης πατά ένα πλήκτρο void keyPressed ( KeyEvent e ):Εκτελείται όποτε ο χρήστης πιέζει ένα πλήκτρο void keyReleased ( KeyEvent e ):Εκτελείται όποτε ο χρήστης αφήνει ένα πλήκτρο. • AdapterClass: • KeyAdapter

  43. KeyListener MouseListener java.lang.Object MouseMotionListener java.util.EventListener ActionListener TextListener ItemListener ComponentListener ContainerListener WindowListener FocusListener AdjustmentListener Interface MouseListener

  44. Interface MouseListener • Υλοποιείται από κλάσεις που διαχειρίζονται Mouse Clicks • Μέθοδοι: void mouseClicked( MouseEvent e ): Εκτελείται όταν πατηθεί πλήκτρο του mouse στην επιφάνεια του τρέχοντος component void mouseEntered( MouseEvent e ):Εκτελείται όταν ο δείκτης του mouse εισέλθειστην επιφάνεια του τρέχοντος component. void mouseExited( MouseEvent e):Εκτελείται όταν ο δείκτης του mouse εξέλθει απότην επιφάνεια του τρέχοντος component. void mousePressed( MouseEvent e ): Εκτελείται όταν πιεστεί πλήκτρο του mouse στην επιφάνεια του τρέχοντος component. void mouseReleased( MouseEvent e ): Εκτελείται όταν πλήκτρο του mouse στην επιφάνεια του τρέχονταο component. • Adapter κλάση: • MouseAdapter

  45. KeyListener MouseListener java.lang.Object MouseMotionListener java.util.EventListener ActionListener TextListener ItemListener ComponentListener ContainerListener WindowListener FocusListener AdjustmentListener Interface MouseMotionListener

  46. Interface MouseMotionListener • Υλοποιείται από κλάσεις που διαχειρίζονται γεγονότα κίνησης ποντικιού. • Μέθοδοι: void mouseDragged( MouseEvent e ):Εκτελείται όποτε μετακινείται ο δείκτης του ποντικιού στην επιφάνεια του τρέχοντος component με πιεσμένο ένα από τα πλήκτρα του. void MouseMoved( MouseEvent e ):Εκτελείται όποτε μετακινείται ο δείκτης του ποντικιού στην επιφάνεια του τρέχοντος component χωρίς πιεσμένο πλήκτρο. • Adapter κλάση: MouseMotionAdapter

  47. KeyListener MouseListener java.lang.Object MouseMotionListener java.util.EventListener ActionListener TextListener ItemListener ComponentListener ContainerListener WindowListener FocusListener AdjustmentListener Interface ActionListener

  48. Interface ActionListener • Υλοποιείται από κλάσεις που διαχειρίζονται ActionEvents • Ορισμένα ActionEvents: 1. mouse click σε Button, 2. πάτημα Enter σε TextField, 3. πάτημα Enter ή διπλό Mouse click σε Listitem. • Μέθοδοι: void actionPerformed(ActionEvent e):Εκτελείται όποτε εμφανίζεται action event στο τρέχον component • AdapterClass: Δεν ορίζεται, εφόσον το interface περιέχει μόνο μία μέθοδο.

  49. KeyListener MouseListener java.lang.Object MouseMotionListener java.util.EventListener ActionListener TextListener ItemListener ComponentListener ContainerListener WindowListener FocusListener AdjustmentListener Interface TextListener

  50. Interface TextListener • Υλοποιείται από κλάσεις που διαχειρίζονται γεγονότα αλλαγής κειμένου • Μέθοδοι: void textValueChanged( TextEvent e ):Εκτελείται όποτε μεταβάλλεται το κείμενο που εμπεριέχεται στο τρέχον component. • Adapter Class: Δεν ορίζεται, εφόσον το interface περιέχει μόνο μία μέθοδο.

More Related