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

Σχετικά έγγραφα
ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

8.1 Top-Level Swing Containers και Swing Components

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

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

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

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

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

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

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

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

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

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

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

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

Week 10: Graphical User Interfaces

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

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

Week 12: GUIs with Swing

άσκηση Hide UI Elements 7.2 Try and Catch

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 1/4/2008

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

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

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

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

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

Ανάπτυξη Plugins για το AgentSheets

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Το παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

6. Εξαιρέσεις στη γλώσσα Java

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Δομές ελέγχου ροής προγράμματος

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

New Project Windows Forms Applications

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΜΙΚΡΟΕΦΑΡΜΟΓΕΣ (APPLETS)

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

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

Υποστηρικτικό υλικό Σημειώσεις

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

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

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

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Transcript:

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

Στην Java εκτός από τις κλασικές εφαρμογές μπορούμε να δημιουργήσουμε και άλλους δύο τύπους εφαρμογών: τα Applets, τα οποία τρέχουν μέσα από κάποιο φυλλομετρητή (browser) και τρέχουν στον πελάτη (client) και τα Servelts, τα οποία τρέχουν στον εξυπηρετητή (server). Η Java Swing χρησιμοποιείται για την κατασκευή διεπαφών χρήστη, επομένως είναι ένα χρήσιμο εργαλείο για την κατασκευή εφαρμογών από την πλευρά του πελάτη και φυσικά χρησιμοποιείται σε κατασκευή Applets. Δρ. Κεραμόπουλος Ευκλείδης 3

Για να δημιουργήσουμε μία Java Swing Applet εφαρμογή θα πρέπει να επεκταθεί η JApplet κλάση. Ουσιαστικά το JApplet παίζει το ρόλο του JFrame στις εφαρμογές που έχουμε δει μέχρι τώρα. Στο NetBeans ξεκινάμε μία εφαρμογή AWT GUI Forms και επιλέγουμε Applet Form. Μία Applet εφαρμογή «τρέχει» από ένα Java-Enabled Browser. To JDK προσφέρει ένα πρόγραμμα το AppletViewer με το οποίο μπορούμε να δοκιμάσουμε τα Applets κατά την κατασκευή τους. Στο τελικό στάδιο κατασκευής τους θα πρέπει να καλέσουμε το Applet ως ενσωματωμένο σε HTML κώδικα. Δρ. Κεραμόπουλος Ευκλείδης 4

Κάθε Applet βασίζεται στον ίδιο σκελετό και πρέπει πάντα να έχει τέσσερις συγκεκριμένες μεθόδους: Για την εκκίνηση του Applet χρησιμοποιούμε τις μεθόδους: 1. init(), Είναι η πρώτη μέθοδος που καλείται και με αυτή γίνεται η αρχικοποίηση του Applet. Συνήθως, εδώ κατασκευάζεται το GUI. 2. start(), Καλείται αμέσως μετά την init(). Επίσης, καλείται για να επανεκκινήσει το Applet όταν σταματήσει. Παράδειγμα, αν φύγουμε από τη web σελίδα που φιλοξενεί το Applet τότε όταν γυρίσουμε στη σελίδα θα πρέπει να ξανατρέξει το start() για να τρέξει το Applet. Για τoν τερματισμό του Applet χρησιμοποιούμε τις μεθόδους: 1. stop(), με αυτή τη μέθοδο σταματά να τρέχει το Applet. Καλείται όταν φεύγουμε από τη σελίδα που περιέχει το Applet. 2. destroy(), με αυτή τη μέθοδο καταστρέφεται το applet. Ουσιαστικά ότι είναι σχετικό με το applet ξεφορτώνεται από τη μνήμη. Δρ. Κεραμόπουλος Ευκλείδης 5

Μέσα στις τέσσερις μεθόδους του σκελετού δεν γράφουμε κάτι σχετικό με τα συστατικά της εφαρμογής ή τη λειτουργία της. Καλούμε άλλες μεθόδους για αυτή τη δουλειά. Στην init() μέθοδο αντίστοιχα με την main(), καλούμε τη μέθοδο invokeandwait για να ορίσουμε ένα Runnable αντικείμενο του οποίου η μέθοδος run() θα εκτελεστεί σε ένα νέο νήμα (thread) Δρ. Κεραμόπουλος Ευκλείδης 6

public void init() { } try { SwingUtilities.invokeAndWait(new Runnable () { public void run() { } }); guiinit(); } catch(exception exc) { } System.out.println( Error"+ exc); Μέθοδος στην οποία υλοποιείται το GUI Δρ. Κεραμόπουλος Ευκλείδης 7

Ένα απλό παράδειγμα applet swing. Δρ. Κεραμόπουλος Ευκλείδης 8

1. import javax.swing.*; 2. import java.awt.*; 3. import java.awt.event.*; 4. public class AppletsDemo extends JApplet { 5. JButton jbtnone; 6. JButton jbtntwo; 7. JLabel jlab; 8. public void init() { 9. try { 10. SwingUtilities.invokeAndWait(new Runnable () { 11. public void run() { 12. guiinit(); 13. } 14. }); 15. } catch(exception exc) { 16. System.out.println( Error "+ exc); 17. } 18. } Κάνει επέκταση το JApplet H init() κάνει τη δουλειά της main() Κάθε νήμα ξεκινά με την run() Δρ. Κεραμόπουλος Ευκλείδης 9

19. public void start() { 20. } Η μέθοδος start() δεν χρησιμοποιείται σε αυτό το applet γιατί δεν χρειάζεται κάποια ανανέωση η σελίδα. 21. public void stop() { 22. } Η μέθοδος stop() δεν χρησιμοποιείται σε αυτό το applet 23. public void destroy() { 24. } Η μέθοδος destroy() δεν χρησιμοποιείται σε αυτό το applet 25. private void guiinit() { 26. setlayout(new FlowLayout()); 27. jbtnone = new JButton("One"); 28. jbtntwo = new JButton("Two"); 29. jlab = new JLabel("Press a button."); Στη μέθοδο guiinit() ξεκινά ο κώδικας swing applet. 30. jbtnone.addactionlistener(new ActionListener() { 31. public void actionperformed(actionevent le) { 32. jlab.settext("button One pressed."); 33. } 34. }); Δρ. Κεραμόπουλος Ευκλείδης 10

35. jbtntwo.addactionlistener(new ActionListener() { 36. public void actionperformed(actionevent le) { 37. jlab.settext("button Two pressed."); 38. } 39. }); 40. getcontentpane().add(jbtnone); 41. getcontentpane().add(jbtntwo); 42. getcontentpane().add(jlab); 43. } 44. } Δρ. Κεραμόπουλος Ευκλείδης 11

Ένα applet μπορεί να εκτελεστεί μέσα από browser. Για να γίνει αυτό μετά το JDK 7 update 45 θα πρέπει να οριστεί το επίπεδο ασφάλειας της java σε medium. Δρ. Κεραμόπουλος Ευκλείδης 12

Δρ. Κεραμόπουλος Ευκλείδης 13

Στη Java Swing μας προσφέρονται έτοιμα εργαλεία τα οποία αποτελούνται από συστατικά της Java Swing. Εδώ θα μελετήσουμε τα εργαλεία που προσφέρονται για εξυπηρέτηση διαλόγου. Το βασικό εργαλείο για διάλογο είναι το JDialog και το JOptionPane το οποίο βασίζεται στο JDialog. Δρ. Κεραμόπουλος Ευκλείδης 15

To JOptionPane δημιουργεί έτοιμα παράθυρα διαλόγου για να εξυπηρετήσει τέσσερις συνηθισμένες ανάγκες: Διαλόγους Ενημέρωσης (message) Διαλόγους Επιβεβαίωσης (confirmation) Διαλόγους Εισαγωγής (Input) Διαλόγους Επιλογής (Option) Δρ. Κεραμόπουλος Ευκλείδης 16

Ο Διάλογος Ενημέρωσης δημιουργεί ένα παράθυρο όπου ενημερώνει τον χρήστη με ένα μήνυμα. Κλείνει όταν ο χρήστης πατήσει το ΟΚ. Δρ. Κεραμόπουλος Ευκλείδης 17

Ο Διάλογος Επιβεβαίωσης δημιουργεί ένα παράθυρο όπου περιέχει μία ερώτηση ΝΑΙ/ΌΧΙ. Δρ. Κεραμόπουλος Ευκλείδης 18

Ο Διάλογος Εισαγωγής δημιουργεί ένα παράθυρο με το οποίο ο χρήστης εισάγει κάποια πληροφορία είτε εισάγοντας ένα αλφαριθμητικό είτε επιλέγοντας κάτι από μία λίστα. Δρ. Κεραμόπουλος Ευκλείδης 19

Ο Διάλογος Επιλογής δημιουργεί ένα παράθυρο με το οποίο ο χρήστης επιλέγει μία από ένα σύνολο επιλογών. Δρ. Κεραμόπουλος Ευκλείδης 20

Όλα τα παράθυρα διαλόγου JOptionPane είναι μονοτροπικά. Για να δημιουργήσουμε ένα παράθυρο διαλόγου JOptionPane χρησιμοποιούμε τις παρακάτω μεθόδους ανάλογα με το παράθυρο που θέλουμε να δημιουργήσουμε: 1. showconfirmdialog() 2. showinputdialog() 3. showmessagedialog() 4. showoptiondialog() Δρ. Κεραμόπουλος Ευκλείδης 21

Δρ. Κεραμόπουλος Ευκλείδης 22

1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. class MsgDialogDemo { 5. JLabel jlab; 6. JButton jbtnshow; 7. JFrame jfrm; 8. MsgDialogDemo() { 9. jfrm = new JFrame("Simple Message Dialog"); 10. jfrm.setlayout(new FlowLayout()); 11. jfrm.setsize(400, 250); 12. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 13. jlab = new JLabel(); 14. jbtnshow = new JButton("Show Dialog"); 15. 16. jbtnshow.addactionlistener(new ActionListener() { 17. public void actionperformed(actionevent le) { 18. JOptionPane.showMessageDialog(jfrm, "Disk Space is Low."); 19. jlab.settext("dialog Closed"); 20. } 21. }); Η μέθοδος showmessagedialog δημιουργεί ένα παράθυρο διάλογο με το κείμενο που περιέχει Μέχρι να πατηθεί το ΟΚ το πρόγραμμα σταματά. Μόλις πατηθεί πηγαίνει στην εντολή που δείχνει το βέλος. Δρ. Κεραμόπουλος Ευκλείδης 23

21. jfrm.add(jbtnshow); 22. jfrm.add(jlab); 23. jfrm.setvisible(true); 24. } 25. public static void main(string args[]) { 26. SwingUtilities.invokeLater(new Runnable() { 27. public void run() { 28. new MsgDialogDemo(); 29. } 30. }); 31. } 32. } Δρ. Κεραμόπουλος Ευκλείδης 24

Δρ. Κεραμόπουλος Ευκλείδης 25

1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. class ConfirmDialogDemo { 5. JLabel jlab; 6. JButton jbtnshow; 7. JFrame jfrm; 8. ConfirmDialogDemo() { 9. jfrm = new JFrame("A Confirmation Dialog"); 10. jfrm.setlayout(new FlowLayout()); 11. jfrm.setsize(400, 250); 12. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 13. jlab = new JLabel(); 14. jbtnshow = new JButton("Show Dialog"); Δρ. Κεραμόπουλος Ευκλείδης 26

15. jbtnshow.addactionlistener(new ActionListener() { 16. public void actionperformed(actionevent le) { 17. int response = JOptionPane.showConfirmDialog(jfrm, "Remove unused files?"); 18. switch(response) { 19. case JOptionPane.YES_OPTION: 20. jlab.settext("you answered Yes."); 21. break; 22. case JOptionPane.NO_OPTION: 23. jlab.settext("you answered No."); 24. break; 25. case JOptionPane.CANCEL_OPTION: 26. jlab.settext("cancel pressed."); 27. break; 28. case JOptionPane.CLOSED_OPTION: 29. jlab.settext("dialog closed without response."); 30. break; 31. } 32. } 33. }); Η μέθοδος showconfirmdialog δημιουργεί ένα παράθυρο διάλογο με το κείμενο που περιέχει και τρία κουμπιά YES, NO, CANCEL Δρ. Κεραμόπουλος Ευκλείδης 27

34. jfrm.add(jbtnshow); 35. jfrm.add(jlab); 36. jfrm.setvisible(true); 37. } 38. public static void main(string args[]) { 39. SwingUtilities.invokeLater(new Runnable() { 40. public void run() { 41. new ConfirmDialogDemo(); 42. } 43. }); 44. } 45. } Δρ. Κεραμόπουλος Ευκλείδης 28

Δρ. Κεραμόπουλος Ευκλείδης 29

1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. class InputDialogDemo { 5. JLabel jlab; 6. JButton jbtnshow; 7. JFrame jfrm; 8. InputDialogDemo() { 9. jfrm = new JFrame("A Simple Input Dialog"); 10. jfrm.setlayout(new FlowLayout()); 11. jfrm.setsize(400, 250); 12. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 13. jlab = new JLabel(); 14. jbtnshow = new JButton("Show Dialog"); Η μέθοδος showinputdialog δημιουργεί ένα παράθυρο διαλόγου το οποίο περιέχει ένα JTextFiled και δύο κουμπιά, τα ΟΚ και CANCEL. 15. jbtnshow.addactionlistener(new ActionListener() { 16. public void actionperformed(actionevent le) { 17. String response = JOptionPane.showInputDialog("Enter Name"); 18. if(response == null) 19. jlab.settext("dialog Cancelled or Closed"); 20. else if(response.length() == 0) 21. jlab.settext("no string entered"); 22. else 23. jlab.settext("hi there " + response); 24. } 25. }); Ανάλογα με το κείμενο που θα εισαχθεί και κουμπί που θα πατηθεί εμφανίζεται το αντίστοιχο μήνυμα. Δρ. Κεραμόπουλος Ευκλείδης 30

26. jfrm.add(jbtnshow); 27. jfrm.add(jlab); 28. jfrm.setvisible(true); 29. } 30. public static void main(string args[]) { 31. SwingUtilities.invokeLater(new Runnable() { 32. public void run() { 33. new InputDialogDemo(); 34. } 35. }); 36. } 37. } Δρ. Κεραμόπουλος Ευκλείδης 31

Δρ. Κεραμόπουλος Ευκλείδης 32

1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. class OptionDialogDemo { 5. JLabel jlab; 6. JButton jbtnshow; 7. JFrame jfrm; 8. OptionDialogDemo() { 9. jfrm = new JFrame("A Simple Option Dialog"); 10. jfrm. setlayout(new FlowLayout()); 11. jfrm.setsize(400, 250); 12. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 13. jlab = new JLabel(); 14. jbtnshow = new JButton("Show Dialog"); 15. jbtnshow.addactionlistener(new ActionListener() { 16. public void actionperformed(actionevent le) { 17. String[] connectopts = { "Modem", "Wireless", "Satelite", "Cable" }; 18. int response = JOptionPane.showOptionDialog( 19. jfrm, 20. "Choose One", 21. "Connection Type", 22. JOptionPane.DEFAULT_OPTION, 23. JOptionPane.QUESTION_MESSAGE, 24. null, 25. connectopts, 26. "Wireless"); Οι παράμετροι που περνάμε στο showoptiondialog είναι: (α) το συστατικό «πατέρας» ιεραρχικά του παραθύρου διαλόγου «jfrm», (β) το μήνυμα μέσα στο παράθυρο «Choose One», (γ) ο τίτλος του παράθυρου «Connection Type», (δ) ορίζεται κάποια συνηθισμένα κουμπιά YES_NO_OPTION και YES_NO_CANCEL_OPTION χρησιμοποιείται μόνο αν η ζ- παράμετρος είναι null (ε) ο τύπος της επιλογής το default είναι το QUESTION_MESSAGE. Οι άλλες επιλογές είναι ERROR, INFORMATION, PLAIN, WARNING MESSAGE, (στ) μία εικόνα, (ζ) οι τιμές των επιλογών, (η) η αρχική τιμή. Δρ. Κεραμόπουλος Ευκλείδης 33

27. switch(response) { 28. case 0: 29. jlab.settext("connect via modem."); break; 30. case 1: 31. jlab.settext("connect via wireless."); break; 32. case 2: 33. jlab.settext("connect via satelite."); break; 34. case 3: 35. jlab.settext("connect via cable."); break; 36. case JOptionPane.CLOSED_OPTION: 37. jlab.settext("dialog cancelled"); break; 38. } 39. } 40. }); 41. jfrm. add(jbtnshow); 42. jfrm. add(jlab); 43. jfrm.setvisible(true); 44. } 45. public static void main(string args[]) { 46. SwingUtilities.invokeLater(new Runnable() { 47. public void run() { 48. new OptionDialogDemo(); 49. } 50. }); 51. } 52. } Δρ. Κεραμόπουλος Ευκλείδης 34

Όταν το JOptionPane δεν καλύπτει τις επιλογές μας τότε χρησιμοποιούμε το JDialog. To JDialog είναι «βαρύ» συστατικό και μπορεί να χαρακτηριστεί αντίστοιχο του JFrame. Στο JDialog μπορούμε να τοποθετήσουμε οποιοδήποτε συστατικό. Για να εμφανίσουμε το JDialog χρησιμοποιούμε τη μέθοδο: setvisible(true) και για να το κρύψουμε τη μέθοδο setvisible(false). Επίσης, θα πρέπει να ορίσουμε και το μέγεθος του JDialog. Δρ. Κεραμόπουλος Ευκλείδης 35

Δρ. Κεραμόπουλος Ευκλείδης 36

1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. class JDialogDemo { 5. JLabel jlab; 6. JButton jbtnshow; 7. JButton jbtnreset; 8. JButton jbtnup; 9. JButton jbtndown; 10. JDialog jdlg; Δήλωση ενός JDialog 11. JDialogDemo() { 12. JFrame jfrm = new JFrame("JDialog Demo"); 13. jfrm.setlayout(new FlowLayout()); 14. jfrm.setsize(400, 200); 15. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 16. jlab = new JLabel("Direction is pending."); 17. jbtnshow = new JButton("Show Dialog"); 18. jbtnreset = new JButton("Reset Direction"); 19. jdlg = new JDialog(jfrm, "Direction", true); 20. jdlg.setsize(200, 100); 21. jdlg.setlayout(new FlowLayout()); Δημιουργία ενός JDialog, το οποίο συνδέεται με το jfrm, έχει τίτλο «Direction» και επίσης καθορίζεται ο τρόπος λειτουργίας του JDialog ως μονοτροπικού Ορισμός του μεγέθους του JDialog Ορισμός του layout του JDialog Δρ. Κεραμόπουλος Ευκλείδης 37

22. jbtnup = new JButton("Up"); 23. jbtndown = new JButton("Down"); 24. jdlg.add(jbtnup); 25. jdlg.add(jbtndown); 26. jdlg.add(new JLabel("Press a button.")); 27. jbtnshow.addactionlistener(new ActionListener() { 28. public void actionperformed(actionevent le) { 29. jdlg.setvisible(true); 30. } 31. }); Ενεργοποίηση του JDialog 32. jbtnreset.addactionlistener(new ActionListener() { 33. public void actionperformed(actionevent le) { 34. jlab.settext("direction is Pending."); 35. } 36. }); 37. jbtnup.addactionlistener(new ActionListener() { 38. public void actionperformed(actionevent le) { 39. jlab.settext("direction is Up"); 40. jdlg.setvisible(false); 41. } 42. }); Απενεργοποίηση του JDialog Δρ. Κεραμόπουλος Ευκλείδης 38

43. jbtndown.addactionlistener(new ActionListener() { 44. public void actionperformed(actionevent le) { 45. jlab.settext("direction is Down"); 46. jdlg.setvisible(false); 47. } 48. }); Απενεργοποίηση του JDialog 49. jfrm.add(jbtnshow); 50. jfrm.add(jbtnreset); 51. jfrm.add(jlab); 52. jfrm.setvisible(true); 53. } 54. public static void main(string args[]) { 55. SwingUtilities.invokeLater(new Runnable() { 56. public void run() { 57. new JDialogDemo(); 58. } 59. }); 60. } 61. } Δρ. Κεραμόπουλος Ευκλείδης 39