This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
swing:intro [2015/05/01 03:01] gthanos [Το πρώτο μου πρόγραμμα] |
swing:intro [2015/05/01 16:48] gthanos [Βασικές μέθοδοι της κλάσης JFrame] |
||
---|---|---|---|
Line 56: | Line 56: | ||
} | } | ||
</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 ==== | ||
Για να μην έχουμε πολλαπλά αρχεία, μία παραλλαγή των παραπάνω είναι να τοποθετήσουμε την κλάση EndingListener σε μία ανώνυμη κλάση, ως εξής: | Για να μην έχουμε πολλαπλά αρχεία, μία παραλλαγή των παραπάνω είναι να τοποθετήσουμε την κλάση EndingListener σε μία ανώνυμη κλάση, ως εξής: | ||
Line 74: | 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 79: | Line 108: | ||
} | } | ||
}; | }; | ||
+ | | ||
endButton.addActionListener(buttonEar); | endButton.addActionListener(buttonEar); | ||
firstWindow.add(endButton); | firstWindow.add(endButton); | ||
Line 86: | Line 116: | ||
</code> | </code> | ||
+ | ==== Το παραπάνω παράθυτο ως αυτόνομη κλάση ==== | ||
+ | |||
+ | Αν θέλατε να δημιουργήσετε μία κλάση που να υλοποιεί το συγκεκριμένο παράθυρο, θα μπορούσατε να το κάνετε ως εξής: | ||
+ | |||
+ | <code java FirstWindow.java> | ||
+ | import javax.swing.JFrame; | ||
+ | import javax.swing.JButton; | ||
+ | import java.awt.event.*; | ||
+ | |||
+ | public class FirstWindow extends JFrame { | ||
+ | public static final int WIDTH = 300; | ||
+ | public static final int HEIGHT = 200; | ||
+ | | ||
+ | public FirstWindow() { | ||
+ | super(); | ||
+ | setSize(WIDTH, HEIGHT); | ||
+ | setTitle("First Window Program!"); | ||
+ | setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
+ | JButton endButton = new JButton("Click to end program."); | ||
+ | ActionListener buttonEar = new ActionListener() { | ||
+ | public void actionPerformed(ActionEvent e) { | ||
+ | System.exit(0); | ||
+ | } | ||
+ | }; | ||
+ | endButton.addActionListener(buttonEar); | ||
+ | add(endButton); | ||
+ | } | ||
+ | | ||
+ | public static void main(String[] args) { | ||
+ | FirstWindow w = new FirstWindow(); | ||
+ | w.setVisible(true); | ||
+ | } | ||
+ | } | ||
+ | </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**: Κρύβει και κάνει minimize το παράθυρο, χωρίς όμως να τερματίζει το πρόγραμμα. | ||
+ | * JFrame.**EXIT_ON_CLOSE**: Τερματίζει το παράθυρο και την εφαρμογή. | ||
+ | <WRAP tip 80% center round> | ||
+ | Η μέθοδος ''w.setVisible(true)'', ορίζει ότι το παράθυρο θα είναι ορατό. Αν ορίσετε ''w.setVisible(false)'', τότε το παράθυρο δεν εμφανίζεται και το πρόγραμμα τερματίζεται μόλις αρχίσει η εκτέλεση του. | ||
+ | </WRAP> | ||