Γραφικά Ενδιάμεσα Χρήστη στην Java

Slides:



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

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Human Computer Interaction JAVA APPLETS JAVA AWT Μελισσόβας Δημήτρης Owda Zaher.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
 Παρουσιάζοντας πολιτισμικό υλικό στα σχολεία
Το υλικό του Υπολογιστή
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
JAVA: AWT, EVENTS, APPLETS Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
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 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
IT-SKILLS Διάλεξη Παρουσιάσεις (PowerPoint)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING Επισκόπηση.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Classes, Objects, και Events.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
Περίπτωση χρήσης: Process sale Από την ΠΧ στον κώδικα.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
Διαχείριση γεγονότων (events) Γεγονότα: Κλήσεις που παράγονται από γραφικά στοιχεία (Components) π.χ. click ποντικιού, μετακίνηση ποντικιού Ακρόαση-Διαχείριση.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
Κεφάλαιο 7 Abstract Window Toolkit (AWT). 2 Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και λειτουργία ενός γραφικού περιβάλλοντος εργασίας.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Γραφικά με Java 1 Διάλεξη 7Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο
Εργαστηριακό σεμινάριο Χειμερινό εξάμηνο
Κατανεμημένα Συστήματα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Web Services στη C# Εργαστήριο 3
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Swing II Εβδομάδα Νο. 6.
Προγραμματισμός κινητών συσκευών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Week 10: Graphical User Interfaces
Επικοινωνίας Java με Swing
Μεταγράφημα παρουσίασης:

Γραφικά Ενδιάμεσα Χρήστη στην Java Δρ. Παναγιώτης Αλεφραγκής ΣΕΠ ΕΑΠ ΠΛΗ24 20-Μαρ-07

Σύγχρονα προγράμματα με γεγονότα Πολλαπλές πηγές εισόδου Ποντίκι πληκτρολόγιο Χρονιστές Εξωτερικά γεγονότα Απαιτείται νέα δομή προγράμματος Περίμενε γεγονός Επεξεργασία γεγονότος Έξοδος

Η Java κρύβει την επανάληψη ελέγχου γεγονότων Η επανάληψη γεγονότων περιέχεται στα Java GUIs GUI σημαίνει Graphical User Interface Η αλληλεπίδραση με ένα GUI Component (π.χ. κουμπί) δημιουργεί ένα γεγονός Στην Java το γεγονός (Event) είναι αντικείμενο Δημιουργούμε Listeners για τα ενδιαφέροντα γεγονότα Οι Listener παίρνουν Event σαν παραμέτρους

Κατασκευάζοντας ένα GUI... 1. Φτιάξτε χώρο για να τοποθετήσετε τα γραφικά αντικείμενα (ένα Container) Συνήθως χρησιμοποιούμε ένα JFrame ή ένα JApplet 2. Φτιάχνουμε μερικά Components (buttons, text areas, panels, κλπ.) Δηλώνουμε τα Components σαν πεδία της κλάσης, και Ορίζουμε κάποια μέθοδο αρχικοποίησης του GUI 3. Προσθέτουμε Listeners στα Components Δημιουργούμε εσωτερικές κλάσεις που υλοποιούν κάποιο Interface τύπου Listener Δημιουργούμε αντικείμενα των εσωτερικών κλάσεων Συνδέουμε αυτά τα αντικείμενα με τα αντίστοιχα Component 4. Προσθέτουμε τα Components Επιλέγουμε ένα layout manager Προσθέτουμε τα Components στον Container βάση των κανόνων που απαιτεί ο layout manager που επιλέξαμε

Containers και Components Ένα GUI δημιουργείται τοποθετώντας components σε containers Δουλειά του Container είναι να κρατά και να παρουσιάζει τα Components που περιέχει Συχνά χρησιμοπούμενες υποκλάσεις της Component είναι JButton, JCheckbox, JLabel, JTextField και JTextArea Οι Container είναι και Component Επιτρέπει να έχουμε ενφωλιασμένα Containers Σημαντικές υποκλάσεις Container είναι JFrame, JApplet και JPanel Στα JFrame και JApplet μπορούμε να πάρουμε τον χώρο τοποθέτηση γραφικών τμημάτων κάνοντας χρήση της getContentPane() Συνήθως κατασκευάζουμε και χρησιμοποιούμε απευθείας τα JPanels

Το JApplet είναι Panel είναι Container java.lang.Object | java.awt.Component | java.awt.Container | java.awt.Panel | java.applet.Applet javax.swing.JApplet …άρα μπορείτε να εμφανίσετε κάτι σε ένα Applet

Ξεκινώντας με ένα Container Πρώτα εισάγουμε μερικά πακέτα: import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; Μετά επεκτείνουμε ένα Container: Για να φτιάξουμε μία εφαρμογή επεκτείνουμε την JFrame public class MyClass extends JFrame { ... } Η κλάση JFrame περιέχει την μέθοδο getContentPane() η οποία επιστρέφει Container προς χρήση: getContentPane( ).doSomething( );

Μερικοί τύποι components JCheckBox JButton JLabel JScrollBar Choice JTextField JList JTextArea JButton ButtonGroup JRadioButton

Διατάσσοντας components Κάθε Container έχει ένα layout manager Δεν αποφασίζουμε άμεσα που θα τοποθετηθούν τα components, αυτό το αποφασίζει ο layout manager Το προεπιλεγμένο layout για το JPanel είναι FlowLayout Το προεπιλεγμένο layout για το JFrame είναι BorderLayout Μπορούμε να θέσουμε άμεσα το layout manager setLayout(new FlowLayout()); setLayout(new BorderLayout());

Παράδειγμα: FlowLayout import javaχ.swing.*; import java.awt.*; public class FlowLayoutExample extends JFrame{ public void init () { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout (new FlowLayout ()); add (new JButton ("One")); add (new JButton ("Two")); add (new JButton ("Three")); add (new JButton ("Four")); add (new JButton ("Five")); add (new JButton ("Six")); } public static void main(String[] args){ FlowLayoutExample f = new FlowLayoutExample(); f.setSize(200,150); f.init(); f.setVisible(true);

Παράδειγμα: BorderLayout import javax.swing.*; import java.awt.*; public class BorderLayoutExample extends JFrame{ public void init () { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout (new BorderLayout ()); add (new JButton ("One"),BorderLayout.NORTH); add (new JButton ("Two"),BorderLayout.WEST); add (new JButton ("Three"),BorderLayout.CENTER); add (new JButton ("Four"),BorderLayout.EAST); add (new JButton ("Five"), BorderLayout.SOUTH); add (new JButton ("Six"), BorderLayout.SOUTH); } public static void main(String[] args){ BorderLayoutExample f = new BorderLayoutExample(); f.setSize(200,150); f.init(); f.setVisible(true);

Χρησιμοποιώντας ένα JPanel import javax.swing.*; import java.awt.*; public class BorderLayoutExample extends JFrame{ public void init () { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout (new BorderLayout ()); add (new JButton ("One"),BorderLayout.NORTH); add (new JButton ("Two"),BorderLayout.WEST); add (new JButton ("Three"),BorderLayout.CENTER); add (new JButton ("Four"),BorderLayout.EAST); JPanel p = new JPanel(); add (p,BorderLayout.SOUTH); p.add (new JButton ("Five")); p.add (new JButton ("Six")); } public static void main(String[] args){ BorderLayoutExample f = new BorderLayoutExample(); f.setSize(200,150); f.init(); f.setVisible(true);

Φτιάχνοντας ενεργά components Για να συνδέσουμε μια ενέργεια με ένα component, προσθέτουμε ένα παρακολουθητή (listener) Τα Components δημιουργούν γεγονότα (events), οι παρακολουθητές ακούν τα γεγονότα Τα διάφορα components δημιουργούν διαφόρων τύπων γεγονότα και άρα απαιτούν διαφόρων τύπων παρακολουθητές

MyButtonListener 1 2 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ButtonListener extends JFrame{ JButton b1=new JButton ("Πάτα με"); JLabel l1=new JLabel("Πριν"); public void init () { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout (new FlowLayout ()); add (l1); add (b1); b1.addActionListener (new MyButtonListener ()); } public static void main(String[] args){ ButtonListener f = new ButtonListener(); f.setSize(200,100); f.init(); f.setVisible(true); class MyButtonListener implements ActionListener { public void actionPerformed (ActionEvent e) { l1.setText("Μετά"); 1 2

MyButtonListener 3 1 2 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ButtonListener extends JFrame{ JButton b1=new JButton ("Πάτα με"); JLabel l1=new JLabel("Πριν"); public void init () { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout (new FlowLayout ()); add (l1); add (b1); b1.addActionListener (new MyButtonListener ()); } public static void main(String[] args){ ButtonListener f = new ButtonListener(); f.setSize(200,100); f.init(); f.setVisible(true); class MyButtonListener implements ActionListener { public void actionPerformed (ActionEvent e) { l1.setText("Μετά"); 3 1 2

Φτιάχνοντας Μικροεφαρμογές Δημιουργούνται παρόμοια με τις εφαρμογές Eπεκτείνουμε την JApplet αντί της JFrame public class MyApplet extends JApplet { ... } Ορίζουμε την μέθοδο init() του applet για αρχικοποίηση Το JApplet περιέχει ένα JPanel για αυτό έχει διάταξη FlowLayout Τα JApplet δεν έχουν main.

GameStore - Ερώτηση 3 - Απάντηση (2) Υλοποίηση: Επαναλαμβάνουμε μέσα σε ένα βρόγχο, για κάθε παιχνίδι, τα βήματα της κατασκευής του αντίστοιχου JLabel και JTextField. Τα νέα αντικείμενα τα αποθηκεύουμε αντίστοιχα σε δύο πίνακες labels και textFileds. Για την παρουσίαση του συνολικού εισοδήματος και κέρδους κατασκευάζουμε από ένα ζευγάρι JLabel και JTextField τα l1, f1 και l2,f2. Κουμπί για την έναρξη της διαδικασίας για τον υπολογισμό του συνολικού εισοδήματος και κέρδους και την ενημέρωση των αντίστοιχων JTextField, δηλαδή των f1 , f2. Για καλύτερη χωροταξική τοποθέτηση των αντικειμένων του γραφικού περιβάλλοντος δημιουργούμε δύο JPanel για την τοποθέτηση των αντίστοιχων γραφικών αντικειμένων.

Από getContentsPane() UI Design JFrame JPanel Από getContentsPane() JLabel JTextField JPanel Το JPanel1 JButton JPanel Το JPanel2

UI Design contentPane = (JPanel)this.getContentPane(); contentPane.setLayout(verticalFlowLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("Frame Title");

Γενικό, Υποστηρίζει περισσότερα παιχνίδια στο μέλλον UI Design Απλοϊκό Label[0] = “Lane1 (4,0)” textFields[0] = “0” Label[1] = “Lane2 (4,0)” textFields[1] = “0” Label[2] = “Table1 (4,0)” textFields[2] = “0” Γενικό, Υποστηρίζει περισσότερα παιχνίδια στο μέλλον textFields = new JTextField[s.games.length]; labels = new JLabel[s.games.length]; for (int i = 0; i < s.games.length; i++) { textFields[i] = new JTextField("0", 10); labels[i] = new JLabel(s.games[i].getName() + " (" + String.valueOf(s.games[i].getIncome()) + ")"); contentPane.add(labels[i]); contentPane.add(textFields[i]); }

UI Design jPanel1.add(l1, null); l1 = new JLabel("Έσοδα:"); jPanel1.add(f1, null); jPanel1.add(l2, null); jPanel1.add(f2, null); contentPane.add(jPanel1, null); l1 = new JLabel("Έσοδα:"); l2 = new JLabel("Κέρδος:"); f1 = new JTextField(10); f2 = new JTextField(10);

UI Design b1 = new JButton("Ανανέωση"); b1.addActionListener(h1); contentPane.add(jPanel2, null); jPanel2.add(b1, null); jPanel2.add(jButton1, null); b1 = new JButton("Ανανέωση"); b1.addActionListener(h1); jButton1.setText("ΣΤΑΤΙΣΤΙΚΑ"); jButton1.addActionListener(new StoreFrame_jButton1_actionAdapter(this));

UI Design _____ contentPane _____ jPanel1 _____ jPanel2 contentPane.add(jPanel1, null); contentPane.add(jPanel2, null);

Χειρισμός γεγονότων Δημιουργεί ένα γεγονός ActionListener actionPerformed Το γεγονός Αισθητήρας συμβάντος Συστατικό

Υλοποίηση της ενέργειας του «Ανανέωση» private class MyHandler1 implements ActionListener { public void actionPerformed(ActionEvent e) { for (int i = 0; i < s.games.length; i++) { s.updateGameUses(i, Double.parseDouble(textFields[i].getText())); } f1.setText(String.valueOf(s.getIncome())); f2.setText(String.valueOf(s.getProfit())); storeToLog();

Ανακεφαλαίωση I: Υλοποιώντας GUI Φτιάχνουμε ένα container, π.χ. JFrame ή JApplet Επιλέγουμε layout manager Φτιάχνουμε συνθετότερα layouts προσθέτοντας JPanels Κάθε JPanel μπορεί να έχει δικό του layout manager Δημιουργούμε τα διάφορα components και τα προσθέτουμε στο JPanels που επιθυμούμε

Ανακεφαλαίωση IΙ: Υλοποιώντας GUI Για κάθε ενεργό component, βρείτε τον τύπο του Listeners που επιθυμούμε Υλοποιούμε (implement) τους Listeners Συχνά έχουμε ένα Listener για κάθε component Μπορούμε να παρακολουθούμε περισσότερα από ένα components με ένα Listener Για κάθε Listener υλοποιούμε τις απαιτούμενες μεθόδους Για τα applets, γράφουμε και την σχετική HTML

Λεξιλόγιο Swing – Η βιβλιοθήκη γραφικών Container – ένα γραφικό τμήμα που μπορεί να περιέχει άλλα γραφικά τμήματα (είναι το ίδιο ένα Component) Component – ένα γραφικό τμήμα (π.χ JButton ή JTextArea) που παρέχεται από την βιβλιοθήκη γραφικών listener – Ένα τμήμα κώδικα που αναλαμβάνει να ενεργοποιηθεί όταν δημιουργηθεί ένα συγκεκριμένο είδος γεγονότος από τα γραφικά αντικείμενα που παρακολουθεί layout manager – Ένα αντικείμενο που αναλαμβάνει να τοποθετήσει τα Components σε ένα Container