This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| 
                    swing:intro [2015/05/01 03:10] gthanos [Το πρώτο μου πρόγραμμα]  | 
                
                    swing:intro [2016/04/23 05:04] (current) gthanos [Το παραπάνω παράθυτο ως αυτόνομη κλάση]  | 
            ||
|---|---|---|---|
| Line 57: | Line 57: | ||
| </code> | </code> | ||
| - | Ας εξετάσουμε όμως τι κάνει το πρόγραμμα μας.  | + | Ας εξετάσουμε όμως τι κάνει το πρόγραμμα μας. Αρχικά δημιουργούμε ένα αντικείμενο του τύπου //JFrame// μέσα από την κλήση. | 
| + | <code java> | ||
| + | JFrame firstWindow = new JFrame(); | ||
| + | </code> | ||
| + | Το αντικείμενο αυτό είναι ένα απλό παράθυρο με τρία κουμπιά (minimize, resize, close). Στη συνέχεια ορίζουμε το μέγεθος του παραθύρου (σε pixels) και τον τίτλο του. | ||
| + | <code java> | ||
| + | firstWindow.setSize(WIDTH, HEIGHT); | ||
| + | firstWindow.setTitle("First Window Program!"); | ||
| + | </code> | ||
| + | Από την εμπειρία σας γνωρίζετε ότι όταν πατήσετε το κουμπί για το κλείσιμο του παραθύρου τότε το παράθυρο κλείνει και η εφαρμογή τερματίζεται. Η παρακάτω γραμμή διαχειρίζεται διαφορετικά ένα click event στο κουμπί κλεισίματος του παραθύρου, όπου όταν πατήσετε το κουμπί κλεισίματος αντί το παράθυρο να κλείσει δεν κάνει τίποτα. | ||
| + | <code java> | ||
| + | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
| + | </code> | ||
| + | Στην συνέχεια ορίζουμε ένα αντικείμενο τύπου JButton (κουμπί) με τίτλο "Click to end program." και δημιουργούμε και έναν Listener τον οποίο συνδέουμε με το συγκεκριμένο κουμπί.  | ||
| + | <code java> | ||
| + | JButton endButton = new JButton("Click to end program."); | ||
| + | EndingListener buttonEar = new EndingListener(); | ||
| + | endButton.addActionListener(buttonEar); | ||
| + | </code> | ||
| + | |||
| + | Προσθέτουμε το κουμπί στο παράθυρο και ορίζουμε ότι το παράθυρο που φτιάξαμε θέλουμε να είναι ορατό. | ||
| + | <code java> | ||
| + | firstWindow.add(endButton); | ||
| + | firstWindow.setVisible(true); | ||
| + | </code> | ||
| ==== Χρήση μίας ανώνυμης κλάσης ActionListener ==== | ==== Χρήση μίας ανώνυμης κλάσης ActionListener ==== | ||
| Line 78: | Line 102: | ||
| firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
| JButton endButton = new JButton("Click to end program."); | JButton endButton = new JButton("Click to end program."); | ||
| + |  | ||
| ActionListener buttonEar = new ActionListener() { | ActionListener buttonEar = new ActionListener() { | ||
| public void actionPerformed(ActionEvent e) { | public void actionPerformed(ActionEvent e) { | ||
| Line 83: | Line 108: | ||
| } | } | ||
| }; | }; | ||
| + |  | ||
| endButton.addActionListener(buttonEar); | endButton.addActionListener(buttonEar); | ||
| firstWindow.add(endButton); | firstWindow.add(endButton); | ||
| Line 90: | Line 116: | ||
| </code> | </code> | ||
| - | Αν τώρα θέλατε να δημιουργήσετε μία κλάση που να υλοποιεί το συγκεκριμένο παράθυρο, θα μπορούσατε να το κάνετε ως εξής: | + | ==== Το παραπάνω παράθυρο ως αυτόνομη κλάση ==== | 
| + | |||
| + | Αν θέλατε να δημιουργήσετε μία κλάση που να υλοποιεί το συγκεκριμένο παράθυρο, θα μπορούσατε να το κάνετε ως εξής: | ||
| <code java FirstWindow.java> | <code java FirstWindow.java> | ||
| Line 123: | Line 151: | ||
| </code> | </code> | ||
| + | ==== Βασικές μέθοδοι της κλάσης JFrame ==== | ||
| + | |||
| + | Οι βασικές μέθοδοι της κλάσης JFrame είναι οι παρακάτω: | ||
| + | * ''public JFrame()'': default κατασκευαστής του παραθύρου. | ||
| + | * ''public JFrame(String title)'': Κατασκευαστής του παραθύρου στον οποίο ορίζεται και ο τίτλος. | ||
| + | * ''public void setTitle(String title)'': Ορισμός του τίτλου του παραθύρου. | ||
| + | * ''public void setSize(int width, int height)'': Ορισμός του μεγέθους του παραθύρου σε pixels. | ||
| + | * ''public void add(Component componentToAdd)'': Προσθέτει ένα γραφικό component στο παράθυρο. | ||
| + | * ''public void setLayout(LayoutManager manager)'': Ορίζει το layout για το παράθυρο. Θα δούμε πιο κάτω τι είναι το layout και θα δούμε επίσης τα πιο ενδιαφέροντα layouts. | ||
| + | * ''public void setMenuBar(JMenuBar menubar)'': Ορίζει την μπάρα για το μενού στο παράθυρο. | ||
| + | * ''public void setDefaultCloseOPeration(int operation)'': Ορίζει την διαδικασία που θα τρέξει όταν ο χρήστης πατήσει το κουμπί (επάνω δεξιά) που κλείνει το παράθυρο. Η μεταβλητή ''operation'' μπορεί να πάρει μία από τις παρακάτω τιμές: | ||
| + | * JFrame.**DO_NOTHING_ON_CLOSE**: Δεν κάνει τίποτα. Αν υπάρχουν ορισμένοι window listeners αυτοί εκτελούνται. | ||
| + | * JFrame.**HIDE_ON_CLOSE**: Κρύβει το παράθυρο αφού εκτελέσει πιθανώς ορισμένους window listeners. Το παράθυρο δεν είναι δυνατόν να ανακτηθεί, αλλά η εφαρμοργή δεν τερματίζεται. Η παραπάνω τιμή είναι η **default** αν δεν έχει οριστεί κάποια άλλη. | ||
| + | * JFrame.**DISPOSE_ON_CLOSE**: Τερματίζει το τρέχον παράθυρο. Αν υπάρχουν και άλλα παράθυρα αυτά παραμένουν, ενώ αν δεν υπάρχουν τερματίζει η εφαρμογή. | ||
| + | * JFrame.**EXIT_ON_CLOSE**: Τερματίζει το τρέχον παράθυρο και συνολικά την εφαμοργή (αν υπάρχουν και άλλα παράθυρα τερματίζουν και αυτά). | ||
| + | <WRAP tip 80% center round> | ||
| + | Η μέθοδος ''w.setVisible(true)'', ορίζει ότι το παράθυρο θα είναι ορατό. Αν ορίσετε ''w.setVisible(false)'', τότε το παράθυρο δεν εμφανίζεται και το πρόγραμμα τερματίζεται μόλις αρχίσει η εκτέλεση του. | ||
| + | </WRAP> | ||