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

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

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

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

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

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

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

Week 10: Graphical User Interfaces

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

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

8.1 Top-Level Swing Containers και Swing Components

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

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

Week 12: GUIs with Swing

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικά της γλώσσας JAVA

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

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Κλάσεις και Αντικείµενα

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

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

ΜΑΘΗΜΑ Στοίχιση Παραγράφων. 2. Εσοχές Παραγράφων ΣΤΟΧΟΙ:

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

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

VK - 04/11/2016- [1]

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

New Project Windows Forms Applications

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

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

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

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

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

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

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

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

Transcript:

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

Μία χρήσιμη τακτική για να οργανώσουμε καλύτερα την πληροφορία σε μία Swing διεπιφάνεια είναι να τοποθετούμε τα συστατικά πρώτα πάνω σε έναν υποδοχέα και μετά στο εξωτερικό content pane (π.χ. JFrame). Ο κλασικός υποδοχέας που χρησιμοποιείται γι αυτή τη δουλειά είναι ο JPanel. Υπάρχει η δυνατότητα (φυσικά) να τοποθετήσουμε ένα JPanel μέσα σε ένα άλλο JPanel. Δρ. Κεραμόπουλος Ευκλείδης 2

JPanel() ΔΟΜΗΤΗΣ JPanel(LayoutManager lm) JPanel(boolean doublebuf) JPanel(LayoutManager lf, Boolean doublebuf) ΠΕΡΙΓΡΑΦΗ Δημιουργεί ένα JPanel με διάταξη flow layout και double buffering. Δημιουργεί ένα JPanel με διάταξη lm και double buffering. Δημιουργεί ένα JPanel με διάταξη flow layout και ορίζουμε το double buffering (true για double) Δημιουργεί ένα JPanel με διάταξη lf και double buffering αν η doublebuf είναι true. Σημείωση: Το double buffering είναι η ταυτόχρονη εμφάνιση όλων των συστατικών ενός JPanel Δρ. Κεραμόπουλος Ευκλείδης 3

Μπορούμε να ορίσουμε αν ένα JPanel είναι διάφανο ή συμπαγή με τις παρακάτω μεθόδους: void setopaque(boolean opaqueon); True False συμπαγή διάφανο boolean isopaque(); Επιστρέφει τι τύπος είναι το JPanel Δρ. Κεραμόπουλος Ευκλείδης 4

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

1. package ADX_project1; 2. import java.awt.*; 3. import java.awt.event.*; 4. import javax.swing.*; 5. class PanelDemo { 6. JLabel jlab; 7. JButton jbtnalpha; 8. JButton jbtnbeta; 9. PanelDemo() { 10. JFrame jfrm = new JFrame("Use Two JPanels"); 11. jfrm.setlayout(new FlowLayout()); 12. jfrm.setsize(210, 210); 13. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 14. 15. JPanel jpnl = new JPanel(); 16. jpnl.setpreferredsize(new Dimension(100, 100)); 17. jpnl.setopaque(true); 18. jpnl.setborder(borderfactory.createlineborder(color.blue)); Δρ. Κεραμόπουλος Ευκλείδης 6

19. JPanel jpnl2 = new JPanel(); 20. jpnl2.setpreferredsize(new Dimension(100, 60)); 21. jpnl2.setopaque(true); 22. jpnl2.setborder( BorderFactory.createLineBorder(Color.RED)); 23. jlab = new JLabel("Press a button."); 24. jbtnalpha = new JButton("Alpha"); 25. jbtnbeta = new JButton("Beta"); 26. jbtnalpha.addactionlistener(new ActionListener() { 27. public void actionperformed(actionevent ae) { 28. jlab.settext("alpha pressed."); 29. } 30. }); Συμπαγές Jpanel Αν το setopaque οριστεί σε false τότε το χρώμα του background του JPanel θα είναι αόρατο 31. jbtnbeta.addactionlistener(new ActionListener() { 32. public void actionperformed(actionevent ae) { 33. jlab.settext("beta pressed."); 34. } 35. }); Δρ. Κεραμόπουλος Ευκλείδης 7

36. jpnl.add(jbtnalpha); 37. jpnl.add(jbtnbeta); 38. jpnl.add(jlab); 39. jpnl2.add(new JLabel("One")); 40. jpnl2.add(new JLabel("Two")); 41. jpnl2.add(new JLabel("Three")); 42. jfrm.add(jpnl); 46. jfrm.add(jpnl2); 47. jfrm.setvisible(true); 48. } 49. public static void main(string args[]) { 50. SwingUtilities.invokeLater(new Runnable() { 51. public void run() { 52. new PanelDemo(); 53. } 54. }); 55. } 56. } Δρ. Κεραμόπουλος Ευκλείδης 8

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

1. package ADX_project1; 2. import java.awt.*; 3. import java.awt.event.*; 4. import javax.swing.*; 5. class MyContentPanel extends JPanel { 6. JLabel jlab; 7. JButton jbtnred; 8. JButton jbtnblue; 9. MyContentPanel() { 10. setopaque(true); 11. setborder(borderfactory.createlineborder(color.green, 5)); 12. jlab = new JLabel("Select Border Color"); 13. jbtnred = new JButton("Red"); 14. jbtnblue = new JButton("Blue"); 15. jbtnred.addactionlistener(new ActionListener() { 16. public void actionperformed(actionevent ae) { 17. setborder(borderfactory.createlineborder(color.red, 5)); 18. } 19. }); Δρ. Κεραμόπουλος Ευκλείδης 10

20. jbtnblue.addactionlistener(new ActionListener() { 21. public void actionperformed(actionevent ae) { 22. setborder(borderfactory.createlineborder(color.blue, 5)); 23. } 24. }); 25. add(jbtnred); 26. add(jbtnblue); 27. add(jlab); 28. } 29. } 30. class CustomCPDemo { 31. CustomCPDemo() { 32. JFrame jfrm = new JFrame("Set the Content Pane"); 33. jfrm.setsize(240, 150); 34. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 35. MyContentPanel mcp = new MyContentPanel(); 36. jfrm.setcontentpane(mcp); 37. jfrm.setvisible(true); 38. } 39. public static void main(string args[]) { 40. SwingUtilities.invokeLater(new Runnable() { 41. public void run() { 42. new CustomCPDemo(); 43. } 44. }); 45. } 46. } Δημιουργία στιγμιότυπου της τάξης που περιέχει το JPanel Ορίζεται ως Content Pane Layer του εξωτερικού frame το content pane του panel. Πλεονέκτημα είναι ότι στο panel μπορείς να ορίσεις τον τρόπο εμφάνισης των συστατικών, δηλαδή με double-buffered όλα μαζί τα συστατικά ή χωρίς double buffered ένα-ένα Δρ. Κεραμόπουλος Ευκλείδης 11

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

1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. class Ex2_5 { 5. JLabel jlab; 6. JButton jbtnalpha; 7. JButton jbtnbeta; 8. JButton jbtncomp; 9. JLabel info; 10. Ex2_5() { 11. JFrame jfrm = new JFrame("Use Component JPanels"); 12. jfrm.setlayout(new FlowLayout()); 13. jfrm.setsize(210, 210); 14. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 15. final JPanel jpnl = new JPanel(); 16. jpnl.setpreferredsize(new Dimension(100, 100)); 17. jpnl.setopaque(true); 18. jpnl.setborder(borderfactory.createlineborder(color.blue)); Δρ. Κεραμόπουλος Ευκλείδης 13

19. jlab = new JLabel("Press a button."); 20. jlab.setname("label1"); 21. jbtnalpha = new JButton("Alpha"); 22. jbtnalpha.setname("alpha"); 23. jbtnbeta = new JButton("Beta"); 24. jbtnbeta.setname("beta"); 25. jbtncomp = new JButton("Show JPanel Components"); 26. info = new JLabel("Components of JPanel: "); 27. 28. 29. jbtnalpha.addactionlistener(new ActionListener() { 30. public void actionperformed(actionevent ae) { 31. jlab.settext("alpha pressed."); 32. } 33. }); 34. jbtnbeta.addactionlistener(new ActionListener() { 35. public void actionperformed(actionevent ae) { 36. jlab.settext("beta pressed."); 37. } 38. }); Δρ. Κεραμόπουλος Ευκλείδης 14

39. jbtncomp.addactionlistener(new ActionListener() { 40. public void actionperformed(actionevent ae) { 41. Component[] components = jpnl.getcomponents(); 42. String temp = ""; 43. 44. for (int i = 0; i < components.length; i++) { 45. temp += " " + components[i].getname(); 46. System.out.println(components[i].getName()); 47. System.out.println(components[i].getClass().getName()); 48. System.out.println(components[i].getParent()); 49. info.settext(temp); 50. } 51. } 52. }); Αποθηκεύουμε όλα τα συστατικά που περιέχει το Jpanel σε πίνακα. Εμφανίζουμε το όνομα κάθε συστατικού Εμφανίζουμε το τύπο κάθε συστατικού Εμφανίζουμε τον υποδοχέα που περιέχεται κάθε συστατικού Δρ. Κεραμόπουλος Ευκλείδης 15

53. jpnl.add(jbtnalpha); 54. jpnl.add(jbtnbeta); 55. jpnl.add(jlab); 56. jfrm.add(jpnl); 57. jfrm.add(jbtncomp); 58. jfrm.add(info); 59. jfrm.setvisible(true); 60. } 61. public static void main(string args[]) { 62. SwingUtilities.invokeLater(new Runnable() { 63. public void run() { 64. new Ex2_5(); 65. } 66. }); 67. } 68. } Δρ. Κεραμόπουλος Ευκλείδης 16

Επικεφαλίδα γραμμής Ένα JScrollPane διαχειρίζεται την κύλιση στο περιεχόμενο του συστατικού που περιλαμβάνει. Ένα JScrollPane παράθυρο αποτελείται από εννέα κομμάτια. Συστατικά γωνίας Επικεφαλίδα στήλης Viewport Κάθετο scrollbar Οριζόντιο scrollbar Δρ. Κεραμόπουλος Ευκλείδης 17

Από τα εννέα συστατικά πάντα χρησιμοποιούνται τα τρία: Viewport, ο χώρος που εμφανίζεται το συστατικό που περιέχει το JScrollPane Τα 2 scrollbar (οριζόντιο και κάθετο) δημιουργούνται δυναμικά όταν χρειάζονται για να εμφανίσουν πληροφορία του περιεχόμενου συστατικού η οποία είναι κρυμμένη (επειδή το συστατικό είναι μεγαλύτερο από το JScrollPane) Δρ. Κεραμόπουλος Ευκλείδης 18

JScrollPane() ΔΟΜΗΤΕΣ JScrollPane(Component comp) JScrollPane(int vertsbp, int horizsbp) JScrollPane(Component comp, int vertsbp, int horizsbp) ΠΕΡΙΓΡΑΦΗ Δημιουργεί ένα JScrollPane χωρίς περιεχόμενο Δημιουργεί ένα JScrollPane με περιεχόμενο το συστατικό comp Δημιουργεί ένα JScrollPane χωρίς περιεχόμενο αλλά ορίζοντας την πολιτική χρήσης των scrollbars Δημιουργεί ένα JScrollPane με περιεχόμενο το συστατικό comp και με ορισμένη την πολιτική χρήσης των scrollbars HORIZONTAL_SCROLLBAR_AS_NEEDED HORIZONTAL_SCROLLBAR_NEVER HORIZONTAL_SCROLLBAR_ALWAYS VERTICAL_SCROLLBAR_AS_NEEDED VERTICAL_SCROLLBAR_NEVER VERTICAL_SCROLLBAR_ALWAYS Οριζόντια όποτε χρειάζεται Δεν εμφανίζεται ποτέ Να εμφανίζεται πάντα Κάθετα όποτε χρειάζεται Δεν εμφανίζεται ποτέ Να εμφανίζεται πάντα Δρ. Κεραμόπουλος Ευκλείδης 19

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

1. package ADX_project1; 2. import javax.swing.*; 3. class ScrollPaneDemo { 4. ScrollPaneDemo() { 5. JFrame jfrm = new JFrame("Use JScrollPane"); 6. jfrm.setsize(200, 120); 7. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 8. JLabel jlab = new JLabel("<html>JScrollPane simplifies what would<br>" + 9. "otherwise be complicated tasks.<br>" + 10. "It can be used to scroll any component<br>" + 11. "or lightweight container. It is especially<br>" + 12. "useful when scrolling tables, lists,<br>" + 13. "or images."); 14. JScrollPane jscrlp = new JScrollPane(jlab); 15. jfrm.add(jscrlp); 16. jfrm.setvisible(true); 17. } Δημιουργείται ένα JScrollBar με περιεχόμενο το jlab 18. public static void main(string args[]) { 19. SwingUtilities.invokeLater(new Runnable() { 20. public void run() { 21. new ScrollPaneDemo(); 22. }}); 23. }} Δρ. Κεραμόπουλος Ευκλείδης 21

void setrowheaderview(component comp) Δημιουργεί την επικεφαλίδα γραμμής. Το περιεχόμενο συστατικό μπορεί να είναι οποιοδήποτε συστατικό. void setcolumnheaderview(component comp) Δημιουργεί την επικεφαλίδα στήλης. Το περιεχόμενο συστατικό μπορεί να είναι οποιοδήποτε συστατικό. void setviewportborder(border border) Εμφανίζει όρια στο Viewport συστατικό ενός scrollpane. Δρ. Κεραμόπουλος Ευκλείδης 22

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

1. package ADX_project1; 2. import java.awt.*; 3. import javax.swing.*; 4. class AddHeadersDemo { 5. JCheckBox jcbopt1; 6. JCheckBox jcbopt2; 7. JCheckBox jcbopt3; 8. JCheckBox jcbopt4; 9. JCheckBox jcbopt5; 10. AddHeadersDemo() { 11. JFrame jfrm = new JFrame("Use Headers"); 12. jfrm.setsize(280, 140); 13. jfrm.setdefaultcloseoperation(jframe.exit_on_close); Δρ. Κεραμόπουλος Ευκλείδης 24

14. JLabel jlaboptions = new 15. JLabel("Select one or more options: "); 16. jcbopt1 = new JCheckBox("Option One"); 17. jcbopt2 = new JCheckBox("Option Two"); 18. jcbopt3 = new JCheckBox("Option Three"); 19. jcbopt4 = new JCheckBox("Option Four"); 20. jcbopt5 = new JCheckBox("Option Five"); 21. JPanel jpnl = new JPanel(); 22. jpnl.setlayout(new GridLayout(6, 1)); 23. jpnl.setopaque(true); 24. jpnl.add(jlaboptions); 25. jpnl.add(jcbopt1); 26. jpnl.add(jcbopt2); 27. jpnl.add(jcbopt3); 28. jpnl.add(jcbopt4); 29. jpnl.add(jcbopt5); Δρ. Κεραμόπουλος Ευκλείδης 25

30. JScrollPane jscrlp = new JScrollPane(jpnl); 31. Δημιουργείται JScrollPane με περιεχόμενο το Panel που δημιουργήθηκε πριν 32. jscrlp.setviewportborder(borderfactory.createlineborder(color.black)); 33. JLabel jlabch = new JLabel("Configuration Center", 34. SwingConstants.CENTER); 35. JLabel jlabrh = new JLabel("<html>C<br>h<br>o<br>o<br>s<br>e", 36. SwingConstants.CENTER); 37. jlabrh.setpreferredsize(new Dimension(20, 200)); 38. 39. jscrlp.setcolumnheaderview(jlabch); 40. jscrlp.setrowheaderview(jlabrh); 41. jfrm.add(jscrlp); 42. jfrm.setvisible(true); 43. } Προσθέτω στο JScrollPane επικεφαλίδες Δρ. Κεραμόπουλος Ευκλείδης 26

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

void setcorner(string which, Component comp); Το which παίρνει μία από τις παρακάτω τιμές ανάλογα με τη γωνία που θέλουμε να χρησιμοποιήσουμε LOWER_LEADING_CORNER LOWER_LEFT_CORNER LOWER_RIGHT_CORNER LOWER_TRAILING_CORNER UPPER_LEADING_CORNER UPPER_LEFT_CORNER UPPER_RIGHT_CORNER UPPER_TRAILING_CORNER Οι γωνίες εμφανίζονται μόνο όταν τα scrollbars και οι επικεφαλίδες φαίνονται. Το μέγεθος κάθε γωνίας εξαρτάται από το πάχος των scrollbars. Δρ. Κεραμόπουλος Ευκλείδης 28

Με το JTabbedPane δημιουργείτε μία διεπαφή με καρτέλες Δρ. Κεραμόπουλος Ευκλείδης 29

JTabbedPane() ΔΟΜΗΤΕΣ JTabbedPane(int where) JTabbedPane(int where, int sclrorwrap) ΠΕΡΙΓΡΑΦΗ Δημιουργεί ένα JTabbedPane με τις καρτέλες στην κορυφή Δημιουργεί ένα JTabbedPane με τις καρτέλες στη θέση where. Πιθανές θέσεις where είναι: SwingConstants.TOP SwingConstants.BOTTOM SwingConstants.LEFT SwingConstants.RIGHT Δημιουργεί ένα JTabbedPane με τις καρτέλες στη θέση where και τον τρόπο που θα τοποθετηθούν οι καρτέλες αν δεν χωράνε σε μία γραμμή. Δύο είναι οι δυνατές επιλογές: JTabbedPane.WRAP_TAB_LAYOUT τοποθετούνται το ένα πάνω από το άλλο JTabbedPane.SCROLL_TAB_LAYOUT τοποθετούνται σε λίστα με scrollbar Δρ. Κεραμόπουλος Ευκλείδης 30

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

Για να προσθέσουμε καρτέλες χρησιμοποιούμε την παρακάτω μέθοδο: void addtab(string name, Component comp) Το name είναι ο τίτλος της καρτέλας Το comp είναι το συστατικό που περιέχει η καρτέλα. void addtab(string name, Icon image, Component comp) Το image είναι εικόνα που μπαίνει στον τίτλο της καρτέλας void addtab(string name, Icon image, Component comp, String tooltip) Το tooltip είναι ένα επεξηγηματικό κείμενο που κρέμεται κάτω από τον τίτλο της καρτέλας όταν περνάει το ποντίκι μέσα από τον τίτλο της καρτέλας. Π.χ. Jtabbedpane1.add( Reports, null, new JLabel( Text in the tab ), This is the Reports tab. ); Δρ. Κεραμόπουλος Ευκλείδης 32

void inserttab(string name, Icon image, Component comp, String tooltip, int idx) Προσθέτει μία νέα καρτέλα στη θέση idx. void remove(int idx) Αφαιρεί μία καρτέλα από τη θέση idx. Δρ. Κεραμόπουλος Ευκλείδης 33

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

1. package ADX_project1; 2. import javax.swing.*; 3. class TabbedPaneDemo { 4. TabbedPaneDemo() { 5. JFrame jfrm = new JFrame("Tabbed Pane Demo"); 6. jfrm.setsize(380, 150); 7. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 8. JTabbedPane jtp = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); 9. jtp.addtab("file Manager, new JLabel(" This is the File Manager tab.")); 10. jtp.addtab("performance, new JLabel(" This is the Performance tab.")); 11. jtp.addtab("reports, new JLabel(" This is the Reports tab.")); 12. jtp.addtab("customize, new JLabel(" This is the Customize tab.")); 13. jfrm.getcontentpane().add(jtp); 14. jfrm.setvisible(true); 15. } Δημιουργία JTabbedPane Προσθήκη καρτελών 16. public static void main(string args[]) { 17. SwingUtilities.invokeLater(new Runnable() { 18. public void run() { 19. new TabbedPaneDemo(); 20. } 21. }); 22. } 23. } Δρ. Κεραμόπουλος Ευκλείδης 35

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

1. package ADX_project1; 2. import java.awt.*; 3. import javax.swing.*; 4. class TabbedPaneWithPanels { 5. JCheckBox jcbdvd; 6. JCheckBox jcbscanner; 7. JCheckBox jcbntwrkrdy; 8. JCheckBox jcbwordproc; 9. JCheckBox jcbcompiler; 10. JCheckBox jcbdatabase; 11. JRadioButton jrbtower; 12. JRadioButton jrbnotebook; 13. JRadioButton jrbhandheld; Δρ. Κεραμόπουλος Ευκλείδης 37

14. TabbedPaneWithPanels() { 15. JFrame jfrm = new JFrame("Use JPanels with JTabbedPane"); 16. jfrm.setsize(280, 140); 17. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 18. jrbtower = new JRadioButton("Tower"); 19. jrbnotebook = new JRadioButton("Notebook"); 20. jrbhandheld = new JRadioButton("Handheld"); 21. 22. ButtonGroup bg = new ButtonGroup(); 23. bg.add(jrbtower); 24. bg.add(jrbnotebook); 25. bg.add(jrbhandheld); 26. 27. JPanel jpnl = new JPanel(); 28. jpnl.setlayout(new GridLayout(3, 1)); 29. jpnl.setopaque(true); 30. jpnl.add(jrbtower); 31. jpnl.add(jrbnotebook); 32. jpnl.add(jrbhandheld); Δρ. Κεραμόπουλος Ευκλείδης 38

33. jcbdvd = new JCheckBox("DVD Burner"); 34. jcbscanner = new JCheckBox("Scanner"); 35. jcbntwrkrdy = new JCheckBox("Network Ready"); 36. 37. JPanel jpnl2 = new JPanel(); 38. jpnl2.setlayout(new GridLayout(3, 1)); 39. jpnl2.setopaque(true); 40. jpnl2.add(jcbdvd); 41. jpnl2.add(jcbscanner); 42. jpnl2.add(jcbntwrkrdy); 43. jcbwordproc = new JCheckBox("Word Processing"); 44. jcbcompiler = new JCheckBox("Program Development"); 45. jcbdatabase = new JCheckBox("Database"); 46. JPanel jpnl3 = new JPanel(); 47. jpnl3.setlayout(new GridLayout(3, 1)); 48. jpnl3.setopaque(true); 49. jpnl3.add(jcbwordproc); 50. jpnl3.add(jcbcompiler); 51. jpnl3.add(jcbdatabase); Δρ. Κεραμόπουλος Ευκλείδης 39

52. JTabbedPane jtp = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); 53. jtp.addtab("style", jpnl); 54. jtp.addtab("options", jpnl2); 55. jtp.addtab("software", jpnl3); 56. jfrm.add(jtp); 57. jfrm.setvisible(true); 58. } Προσθέτουμε ένα panel ανά καρτέλα 59. public static void main(string args[]) { 60. SwingUtilities.invokeLater(new Runnable() { 61. public void run() { 62. new TabbedPaneWithPanels(); 63. } 64. }); 65. } 66. } Δρ. Κεραμόπουλος Ευκλείδης 40

Με το JSplitPane μπορούμε να δημιουργήσουμε ένα panel το οποίο χωρίζεται σε δύο μέρη και υπάρχει η δυνατότητα να αλλάζει το μέγεθος κάθε πλευράς δυναμικά Δρ. Κεραμόπουλος Ευκλείδης 41

JSplitPane() ΔΟΜΗΤΕΣ JSplitPane(int verthoriz) JSplitPane(int verthoriz, boolean contredraw) JSplitPane(int verthoriz, Component leftortop, Component rightorbottom) JSplitPane(int verthoriz, boolean contredraw, Component leftortop, Component rightorbottom) ΠΕΡΙΓΡΑΦΗ Δημιουργία ενός άδειου JSplitPane με οριζόντιο χώρισμα. Δημιουργία ενός άδειου JSplitPane με vertorhoriz χώρισμα, JSplitPane.HORIZONTAL_SPLIT, JSplitPane.VERTICAL_SPLIT. Όταν η μεταβλητή contredraw είναι true τότε τα συστατικά ξαναζωγραφίζονται καθώς μετακινείται το διαχωριστικό, αλλιώς μόλις σταματήσει Τα δύο συστατικά είναι τα περιεχόμενα των δύο πλευρών του JSplitPane Δημιουργία ενός JSplitPane με ορισμό όλων των παραμέτρων Δρ. Κεραμόπουλος Ευκλείδης 42

1. import javax.swing.*; 2. import java.awt.*; 3. 4. class SplitPaneDemo { 5. 6. SplitPaneDemo() { 7. JFrame jfrm = new JFrame("Split Pane Demo"); 8. jfrm.setsize(380, 150); 9. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 10. 11. JLabel jlab = new JLabel(" Left side: ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 12. JLabel jlab2 = new JLabel(" Right side: ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 13. jlab.setminimumsize(new Dimension(90, 30)); 14. jlab2.setminimumsize(new Dimension(90, 30)); 15. JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, jlab, jlab2); 16. jfrm.add(jsp); 17. jfrm.setvisible(true); 18. } 19. 20. public static void main(string args[]) { 21. SwingUtilities.invokeLater(new Runnable() { 22. public void run() { 23. new SplitPaneDemo(); 24. } 25. }); 26. } 27. } Δημιουργία ενός JSplitpane Δρ. Κεραμόπουλος Ευκλείδης 43

void setorientation(int vertorhoriz); Αλλάζει τη κατεύθυνση void setbottomcomponent(component comp); void settopcomponent(component comp); void setleftcomponent(component comp); void setrightcomponent(component comp); Τοποθετεί ένα συστατικό στην κατάλληλη θέση void setcontinuouslayout(boolean CLon); Ορίζει πως θα εμφανίζονται τα συστατικά όπως μετακινείται το διαχωριστικό, αν δηλαδή θα μετακινούνται και εκείνα ή θα μετακινούνται όταν ολοκληρώνεται η κίνηση της διαχωριστικής γραμμής Δρ. Κεραμόπουλος Ευκλείδης 44

Τα tooltips είναι επεξηγηματικό κείμενο που εμφανίζεται όταν το ποντίκι μπαίνει στο χώρο ενός συστατικού. Ορίζεται με τη μέθοδο Void settooltiptext(string tip); Δρ. Κεραμόπουλος Ευκλείδης 45

1. package ADX_project1; 2. import javax.swing.*; 3. import java.awt.*; 4. class ToolTipDemo { 5. ToolTipDemo() { 6. JFrame jfrm = new JFrame("Add Tooltips"); 7. jfrm.setlayout(new FlowLayout()); 8. jfrm.setsize(300, 150); 9. jfrm.setdefaultcloseoperation(jframe.exit_on_close); 10. JButton jbtnalpha = new JButton("Alpha"); 11. JButton jbtnbeta = new JButton("Beta"); 12. jbtnalpha.settooltiptext("this activates the Alpha option."); 13. jbtnbeta.settooltiptext("this activates the Beta option."); 14. jfrm. add(jbtnalpha); 15. jfrm. add(jbtnbeta); 16. jfrm.setvisible(true); 17. } Ορισμός επεξηγηματικών σχολίων 18. public static void main(string args[]) { 19. SwingUtilities.invokeLater(new Runnable() { 20. public void run() { 21. new ToolTipDemo(); 22. } 23. }); 24. } 25. } Δρ. Κεραμόπουλος Ευκλείδης 46

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

επόμενη ενότητα