User Tools

Site Tools


swing:jframe

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
swing:jframe [2018/03/22 08:18]
gthanos [Η κλάση JFrame]
swing:jframe [2020/03/16 12:47]
gthanos [Βασικές μέθοδοι της κλάσης JFrame]
Line 41: Line 41:
   - Η εκτέλεση του κώδικα που αφορά το παραθυρικό περιβάλλον //swing// γίνεται μέσα από την κλήση της στατικής μεθόδου [[https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingUtilities.html#invokeLater-java.lang.Runnable-|SwingUtilities.invokeLaber]], η οποία εκτελεί τον παραθυρικό κώδικα σε ένα νέο νήμα το **event dispatch thread** (νήμα αποστολής συμβάντων). Αν και αυτό δεν είναι απαραίτητο για να τρέξει το πρόγραμμα σας, [[https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html|αποτελεί καλή πρακτική]], η οποία διαχωρίζει το συγκεκριμένο νήμα από άλλα νήματα που πιθανόν τρέχουν στην εφαρμογή σας.   - Η εκτέλεση του κώδικα που αφορά το παραθυρικό περιβάλλον //swing// γίνεται μέσα από την κλήση της στατικής μεθόδου [[https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingUtilities.html#invokeLater-java.lang.Runnable-|SwingUtilities.invokeLaber]], η οποία εκτελεί τον παραθυρικό κώδικα σε ένα νέο νήμα το **event dispatch thread** (νήμα αποστολής συμβάντων). Αν και αυτό δεν είναι απαραίτητο για να τρέξει το πρόγραμμα σας, [[https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html|αποτελεί καλή πρακτική]], η οποία διαχωρίζει το συγκεκριμένο νήμα από άλλα νήματα που πιθανόν τρέχουν στην εφαρμογή σας.
   - H κλάση JFrame παράγει ένα αντικείμενο που αντιστοιχεί στο παράθυρο. Η παράμετρος τύπου String στον κατασκευαστή αντιστοιχεί στον τίτλο που θα φέρει το παράθυρο.    - H κλάση JFrame παράγει ένα αντικείμενο που αντιστοιχεί στο παράθυρο. Η παράμετρος τύπου String στον κατασκευαστή αντιστοιχεί στον τίτλο που θα φέρει το παράθυρο. 
-  - Η μέθοδος [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation-int-|JFrame.setDefaultCloseOPeration(int operation)]] ορίζει τι θα γίνει όταν ο χρήστης πατήσει το κουμπί (επάνω δεξιά) που κλείνει το παράθυρο. Η μεταβλητή ''operation'' μπορεί να πάρει μία από τις παρακάτω τιμές:+  - Η μέθοδος [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation-int-|JFrame.setDefaultCloseOperation(int operation)]] ορίζει τι θα γίνει όταν ο χρήστης πατήσει το κουμπί (επάνω δεξιά) που κλείνει το παράθυρο. Η μεταβλητή ''operation'' μπορεί να πάρει μία από τις παρακάτω τιμές:
     * JFrame.**DO_NOTHING_ON_CLOSE**: Δεν κάνει τίποτα. Αν υπάρχουν ορισμένοι window listeners αυτοί εκτελούνται.     * JFrame.**DO_NOTHING_ON_CLOSE**: Δεν κάνει τίποτα. Αν υπάρχουν ορισμένοι window listeners αυτοί εκτελούνται.
     * JFrame.**HIDE_ON_CLOSE**: Κρύβει το παράθυρο αφού εκτελέσει πιθανώς ορισμένους window listeners. Το παράθυρο δεν είναι δυνατόν να ανακτηθεί, αλλά η εφαρμογή δεν τερματίζεται. Η παραπάνω τιμή είναι η **default** αν δεν έχει οριστεί κάποια άλλη.     * JFrame.**HIDE_ON_CLOSE**: Κρύβει το παράθυρο αφού εκτελέσει πιθανώς ορισμένους window listeners. Το παράθυρο δεν είναι δυνατόν να ανακτηθεί, αλλά η εφαρμογή δεν τερματίζεται. Η παραπάνω τιμή είναι η **default** αν δεν έχει οριστεί κάποια άλλη.
Line 55: Line 55:
 ===== Δομικά στοιχεία ενός JFrame ===== ===== Δομικά στοιχεία ενός JFrame =====
  
-Από τι αποτελείται όμως ένα αντικείμενο της κλάσης JFrame; Στην πραγματικότητα ένα JFrame είναι ένα αντικείμενο που χρησιμοποιεί τα hooks του λειτουργικού συστήματος και του window manager για να δημιουργήσει ένα παράθυρο. Ένα JFrame περιέχει ένα αντικείμενο της κλάσης [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JRootPane.html|JRootPane]], το οποίο με τη σειρά του περιέχει οτιδήποτε συνδέεται με το περιεχόμενο του παραθύρου. Πιο συγκεκριμένα ένα [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JRootPane.html|JRootPane]] περιέχει με τη σειρά του:+Από τι αποτελείται όμως ένα αντικείμενο της κλάσης [[https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html|JFrame]]; Στην πραγματικότητα ένα **JFrame** είναι ένα αντικείμενο που χρησιμοποιεί τα hooks του λειτουργικού συστήματος και του window manager για να δημιουργήσει ένα παράθυρο. Ένα **JFrame** περιέχει ένα αντικείμενο της κλάσης [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JRootPane.html|JRootPane]], το οποίο με τη σειρά του περιέχει οτιδήποτε συνδέεται με το περιεχόμενο του παραθύρου. Πιο συγκεκριμένα ένα [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JRootPane.html|JRootPane]] περιέχει με τη σειρά του τα εξής:
   - ένα αντικείμενο της κλάσης [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JLayeredPane.html|JLayeredPane]] το οποίο έχει την δυνατότητα να προσδίδει βάθος στα αντικείμενα που περιέχονται στο παράθυρο. Δεν θα ασχοληθούμε περαιτέρω με τη συγκεκριμένη κλάση, καθώς έχει ειδικές εφαρμογές. Μπορείτε να δείτε το σχετικό [[https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html|παράδειγμα από το site της Oracle]].   - ένα αντικείμενο της κλάσης [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JLayeredPane.html|JLayeredPane]] το οποίο έχει την δυνατότητα να προσδίδει βάθος στα αντικείμενα που περιέχονται στο παράθυρο. Δεν θα ασχοληθούμε περαιτέρω με τη συγκεκριμένη κλάση, καθώς έχει ειδικές εφαρμογές. Μπορείτε να δείτε το σχετικό [[https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html|παράδειγμα από το site της Oracle]].
   - ένα //content pane// (συνήθως είναι αντικείμενο της κλάσης [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html|JPanel]])   - ένα //content pane// (συνήθως είναι αντικείμενο της κλάσης [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JPanel.html|JPanel]])
   - ένα [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html|menu]] που τοποθετείται ακριβώς πάνω από το //content pane//.   - ένα [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JMenuBar.html|menu]] που τοποθετείται ακριβώς πάνω από το //content pane//.
-  - ένα //component// που ονομάζεται Glass Pane και τοποθετείται πάνω από το JLayeredPane.+  - ένα //component// που ονομάζεται Glass Pane και τοποθετείται πάνω από το [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JLayeredPane.html|JLayeredPane]], προκειμένου να πιάσει με τη βοήθεια του ποντικιού events πάνω από άλλα αντικείμενα. Και αυτό δεν θα μας απασχολήσει στη συνέχεια, καθώς έχει ειδικές εφαρμογές.
  
-Το παρακάτω σχήμα από το [[https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html#rootpane|site της Oracle]] δίνει εποπτικά την παραπάνω διάκριση των περιεχομένων του [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JRootPane.html|JRootPane]].+Το παρακάτω σχήμα από το [[https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html#rootpane|site της Oracle]] δίνει εποπτικά την παραπάνω διάκριση των περιεχομένων του [[https://docs.oracle.com/javase/8/docs/api/javax/swing/JRootPane.html|JRootPane]]. Δεν θα ασχοληθούμε περαιτέρω με την κλάση **JRootPane**, αλλά θα επικεντρωθούμε στο //content pane// και το //menu bar// που αυτό περιέχει (στοιχεία 2 και 3 από την παραπάνω λίστα).
  
 {{  :swing:ui-rootpane.gif  |}} {{  :swing:ui-rootpane.gif  |}}
Line 70: Line 70:
     * **public JFrame()**: default κατασκευαστής του παραθύρου.     * **public JFrame()**: default κατασκευαστής του παραθύρου.
     * **public JFrame(String title)**: Κατασκευαστής του παραθύρου στον οποίο ορίζεται και ο τίτλος.     * **public JFrame(String title)**: Κατασκευαστής του παραθύρου στον οποίο ορίζεται και ο τίτλος.
-και τις παρακάτω μεθόδους **α)** σχετικά με το μέγεθος του παραθύρου:+ 
 +και τις παρακάτω μεθόδους 
 + 
 +**α)** σχετικά με το μέγεθος του παραθύρου:
   * **public void setSize(int width, int height)**: Ορισμός του μεγέθους του παραθύρου σε pixels.   * **public void setSize(int width, int height)**: Ορισμός του μεγέθους του παραθύρου σε pixels.
   * **void setSize(int width, int height):** Ορισμός του μεγέθους του παραθύρου σε pixels.   * **void setSize(int width, int height):** Ορισμός του μεγέθους του παραθύρου σε pixels.
Line 82: Line 85:
   * **public void setDefaultCloseOPeration(int operation)**: Αναφέρθηκε προηγούμενα.   * **public void setDefaultCloseOPeration(int operation)**: Αναφέρθηκε προηγούμενα.
  
 +| Προηγούμενο: [[:swing:events | Events & Event Listeners ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:swing:color | Η κλάση JColor ]] |
  
swing/jframe.txt · Last modified: 2021/04/13 05:33 (external edit)