swing:intro
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
swing:intro [2018/03/20 17:46] – [Χρήση μίας ανώνυμης κλάσης ActionListener] gthanos | swing:intro [2020/03/16 10:45] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
Σε αυτή την ενότητα θα δούμε πως μπορούμε να κατασκευάσουμε παραθυρικές εφαρμογές (Graphical User Interfaces, GUIs) με χρήση της βιβλιοθήκης **Swing**. Οι παραθυρικές εφαρμογές είναι διαφορετικές από τις εφαρμογές που χρησιμοποιούν την κονσόλα για είσοδο και έξοδο, με την έννοια ότι δεν υφίσταται μία συνεχής ροή προγράμματος, | Σε αυτή την ενότητα θα δούμε πως μπορούμε να κατασκευάσουμε παραθυρικές εφαρμογές (Graphical User Interfaces, GUIs) με χρήση της βιβλιοθήκης **Swing**. Οι παραθυρικές εφαρμογές είναι διαφορετικές από τις εφαρμογές που χρησιμοποιούν την κονσόλα για είσοδο και έξοδο, με την έννοια ότι δεν υφίσταται μία συνεχής ροή προγράμματος, | ||
- | Το παρακάτω σχήμα **Α** δείχνει το παράδειγμα μίας εφαρμογής swing που αποτελείται από μόνο ένα κουμπί (button). O χρήστης κάθε φορά που πατά το κουμπί με το ποντίκι (αριστερό click) δημιουργείται ένα event του τύπου ActionEvent. To event μπορούμε να επιλέξουμε να "πιαστεί" | + | Το παρακάτω σχήμα **Α** δείχνει το παράδειγμα μίας εφαρμογής swing που αποτελείται από μόνο ένα κουμπί (button). O χρήστης κάθε φορά που πατά το κουμπί με το ποντίκι (αριστερό click) δημιουργείται ένα event του τύπου ActionEvent. To event μπορούμε να επιλέξουμε να το διαχειριστούμε μέσα |
^Α. Παράδειγμα γραφικού περιβάλλοντος java/ | ^Α. Παράδειγμα γραφικού περιβάλλοντος java/ | ||
Line 16: | Line 16: | ||
{{ : | {{ : | ||
+ | | Προηγούμενο: | ||
- | |||
- | ===== Το πρώτο μου πρόγραμμα ===== | ||
- | |||
- | Παρακάτω φτιάχνουμε ένα πρώτο απλό παραθυρικό πρόγραμμα το οποίο έχει μόνο ένα κουμπί που τερματίζει την εφαρμογή. Κατεβάστε και τρέξτε τα επόμενα δύο αρχεία. | ||
- | |||
- | <code java FirstWindow.java> | ||
- | import javax.swing.JFrame; | ||
- | import javax.swing.JButton; | ||
- | |||
- | public class FirstWindow { | ||
- | public static final int WIDTH = 300; | ||
- | public static final int HEIGHT = 200; | ||
- | | ||
- | public static void showGUI() { | ||
- | JFrame firstWindow = new JFrame(); | ||
- | firstWindow.setSize(WIDTH, | ||
- | firstWindow.setTitle(" | ||
- | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
- | JButton endButton = new JButton(" | ||
- | EndingListener buttonEar = new EndingListener(); | ||
- | endButton.addActionListener(buttonEar); | ||
- | firstWindow.add(endButton); | ||
- | firstWindow.setVisible(true); | ||
- | } | ||
- | | ||
- | public static void main(String[] args) { | ||
- | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
- | public void run() { | ||
- | showGUI(); | ||
- | } | ||
- | }); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | <code java EndingListener.java> | ||
- | import java.awt.event.*; | ||
- | |||
- | public class EndingListener implements ActionListener { | ||
- | public void actionPerformed(ActionEvent e) { | ||
- | System.exit(0); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Ας εξετάσουμε όμως τι κάνει το πρόγραμμα μας. Αρχικά δημιουργούμε ένα αντικείμενο του τύπου //JFrame// μέσα από την κλήση. | ||
- | <code java> | ||
- | JFrame firstWindow = new JFrame(); | ||
- | </ | ||
- | Το αντικείμενο αυτό είναι ένα απλό παράθυρο με τρία κουμπιά (minimize, resize, close). Στη συνέχεια ορίζουμε το μέγεθος του παραθύρου (σε pixels) και τον τίτλο του. | ||
- | <code java> | ||
- | firstWindow.setSize(WIDTH, | ||
- | firstWindow.setTitle(" | ||
- | </ | ||
- | Από την εμπειρία σας γνωρίζετε ότι όταν πατήσετε το κουμπί για το κλείσιμο του παραθύρου τότε το παράθυρο κλείνει και η εφαρμογή τερματίζεται. Η παρακάτω γραμμή διαχειρίζεται διαφορετικά ένα click event στο κουμπί κλεισίματος του παραθύρου, | ||
- | <code java> | ||
- | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
- | </ | ||
- | |||
- | Στην συνέχεια ορίζουμε ένα αντικείμενο τύπου JButton (κουμπί) με τίτλο "Click to end program." | ||
- | <code java> | ||
- | JButton endButton = new JButton(" | ||
- | EndingListener buttonEar = new EndingListener(); | ||
- | endButton.addActionListener(buttonEar); | ||
- | </ | ||
- | |||
- | Προσθέτουμε το κουμπί στο παράθυρο και ορίζουμε ότι το παράθυρο που φτιάξαμε θέλουμε να είναι ορατό. | ||
- | <code java> | ||
- | firstWindow.add(endButton); | ||
- | firstWindow.setVisible(true); | ||
- | </ | ||
- | ==== Χρήση μίας ανώνυμης κλάσης ActionListener σε αντικατάσταση της κλάσης EndingListener ==== | ||
- | |||
- | Για να μην έχουμε πολλαπλά αρχεία, | ||
- | |||
- | <code java FirstSwingDemo2.java> | ||
- | import javax.swing.JFrame; | ||
- | import javax.swing.JButton; | ||
- | import java.awt.event.*; | ||
- | |||
- | public class FirstSwingDemo2 { | ||
- | public static final int WIDTH = 300; | ||
- | public static final int HEIGHT = 200; | ||
- | | ||
- | public static void showGUI() { | ||
- | JFrame firstWindow = new JFrame(); | ||
- | firstWindow.setSize(WIDTH, | ||
- | firstWindow.setTitle(" | ||
- | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
- | JButton endButton = new JButton(" | ||
- | | ||
- | ActionListener buttonEar = new ActionListener() { | ||
- | public void actionPerformed(ActionEvent e) { | ||
- | System.exit(0); | ||
- | } | ||
- | }; | ||
- | | ||
- | endButton.addActionListener(buttonEar); | ||
- | firstWindow.add(endButton); | ||
- | firstWindow.setVisible(true); | ||
- | } | ||
- | | ||
- | public static void main(String[] args) { | ||
- | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
- | public void run() { | ||
- | showGUI(); | ||
- | } | ||
- | }); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ==== Το παραπάνω παράθυρο ως αυτόνομη κλάση ==== | ||
- | |||
- | Αν θέλατε να δημιουργήσετε μία κλάση που να υλοποιεί το συγκεκριμένο παράθυρο, | ||
- | |||
- | <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 static void showGUI() { | ||
- | JFrame firstWindow = new JFrame(); | ||
- | firstWindow.setSize(WIDTH, | ||
- | firstWindow.setTitle(" | ||
- | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
- | JButton endButton = new JButton(" | ||
- | ActionListener buttonEar = new ActionListener() { | ||
- | public void actionPerformed(ActionEvent e) { | ||
- | System.exit(0); | ||
- | } | ||
- | }; | ||
- | endButton.addActionListener(buttonEar); | ||
- | firstWindow.add(endButton); | ||
- | firstWindow.setVisible(true); | ||
- | } | ||
- | | ||
- | public static void main(String[] args) { | ||
- | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
- | public void run() { | ||
- | showGUI(); | ||
- | } | ||
- | }); | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ==== Βασικές μέθοδοι της κλάσης JFrame ==== | ||
- | |||
- | Οι βασικές μέθοδοι της κλάσης JFrame είναι οι παρακάτω: | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * JFrame.**DO_NOTHING_ON_CLOSE**: | ||
- | * JFrame.**HIDE_ON_CLOSE**: | ||
- | * JFrame.**DISPOSE_ON_CLOSE**: | ||
- | * JFrame.**EXIT_ON_CLOSE**: | ||
- | |||
- | <WRAP tip 80% center round> | ||
- | Η μέθοδος '' | ||
- | </ | ||
swing/intro.1521567977.txt.gz · Last modified: 2018/03/20 17:46 (external edit)