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 [2017/04/04 15:23] gthanos |
swing:intro [2018/03/20 17:46] gthanos [Χρήση μίας ανώνυμης κλάσης ActionListener] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Δημιουργία παραθυρικών εφαρμογών με Swing ====== | ====== Δημιουργία παραθυρικών εφαρμογών με Swing ====== | ||
| - | Σε αυτή την ενότητα θα δούμε πως μπορούμε να κατασκευάσουμε παραθυρικές εφαρμογές (Graphical User Interfaces, GUIs) με χρήση της βιβλιοθήκης Swing. Οι παραθυρικές εφαρμογές είναι διαφορετικές από τις εφαρμογές που | + | Σε αυτή την ενότητα θα δούμε πως μπορούμε να κατασκευάσουμε παραθυρικές εφαρμογές (Graphical User Interfaces, GUIs) με χρήση της βιβλιοθήκης |
| - | ===== Events | + | Το παρακάτω σχήμα **Α** δείχνει το παράδειγμα μίας εφαρμογής swing που αποτελείται από μόνο ένα κουμπί (button). O χρήστης κάθε φορά που πατά το κουμπί με το ποντίκι (αριστερό click) δημιουργείται ένα event του τύπου ActionEvent. To event μπορούμε να επιλέξουμε να " |
| - | Τα παραθυρικά προγράμματα Swing χρησιμοποιούν events και //event handlers//. Ένα event είναι ένα αντικείμενο που λειτουργεί ως ερέθισμα σε ένα | + | ^Α. Παράδειγμα γραφικού περιβάλλοντος |
| - | + | |{{ : | |
| - | < | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | </ | + | |
| - | + | ||
| - | Το παραπάνω σχήμα απεικονίζει γραφικά την σχέση | + | |
| <WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
| - | Βασικό χαρακτηριστικό του event driven προγραμματισμού είναι ότι δημιουργούμε αντικείμενα και μεθόδους (event listeners) τα οποία δεν γνωρίζουμε αν θα κληθούν και με ποια σειρά θα κληθούν, | + | Βασικό χαρακτηριστικό του event driven προγραμματισμού είναι ότι δημιουργούμε αντικείμενα και μεθόδους (event listeners) τα οποία δεν γνωρίζουμε αν θα κληθούν και με ποια σειρά θα κληθούν, |
| </ | </ | ||
| + | |||
| + | Το γραφικό περιβάλλον μίας εφαρμογής αποτελείται από αντικείμενα που αντιπροσωπεύουν οντότητες με τις οποίες ο χρήστης μπορεί να αλληλεπιδράσει. Παραδείγματα, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| ===== Το πρώτο μου πρόγραμμα ===== | ===== Το πρώτο μου πρόγραμμα ===== | ||
| Line 29: | Line 26: | ||
| import javax.swing.JButton; | import javax.swing.JButton; | ||
| - | public class FirstSwingDemo | + | public class FirstWindow |
| public static final int WIDTH = 300; | public static final int WIDTH = 300; | ||
| public static final int HEIGHT = 200; | public static final int HEIGHT = 200; | ||
| | | ||
| - | public static void showGUI { | + | public static void showGUI() { |
| JFrame firstWindow = new JFrame(); | JFrame firstWindow = new JFrame(); | ||
| firstWindow.setSize(WIDTH, | firstWindow.setSize(WIDTH, | ||
| Line 91: | Line 88: | ||
| firstWindow.setVisible(true); | firstWindow.setVisible(true); | ||
| </ | </ | ||
| - | ==== Χρήση μίας ανώνυμης κλάσης ActionListener ==== | + | ==== Χρήση μίας ανώνυμης κλάσης ActionListener |
| Για να μην έχουμε πολλαπλά αρχεία, | Για να μην έχουμε πολλαπλά αρχεία, | ||
| Line 104: | Line 101: | ||
| public static final int HEIGHT = 200; | public static final int HEIGHT = 200; | ||
| | | ||
| - | public static void main(String[] args) { | + | public static void showGUI() { |
| JFrame firstWindow = new JFrame(); | JFrame firstWindow = new JFrame(); | ||
| firstWindow.setSize(WIDTH, | firstWindow.setSize(WIDTH, | ||
| Line 120: | Line 117: | ||
| firstWindow.add(endButton); | firstWindow.add(endButton); | ||
| firstWindow.setVisible(true); | firstWindow.setVisible(true); | ||
| + | } | ||
| + | | ||
| + | public static void main(String[] args) { | ||
| + | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
| + | public void run() { | ||
| + | showGUI(); | ||
| + | } | ||
| + | }); | ||
| } | } | ||
| } | } | ||
| Line 137: | Line 142: | ||
| public static final int HEIGHT = 200; | public static final int HEIGHT = 200; | ||
| | | ||
| - | public | + | public |
| - | | + | |
| - | setSize(WIDTH, | + | |
| - | setTitle(" | + | |
| - | setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | + | |
| JButton endButton = new JButton(" | JButton endButton = new JButton(" | ||
| ActionListener buttonEar = new ActionListener() { | ActionListener buttonEar = new ActionListener() { | ||
| Line 149: | Line 154: | ||
| }; | }; | ||
| endButton.addActionListener(buttonEar); | endButton.addActionListener(buttonEar); | ||
| - | add(endButton); | + | |
| + | firstWindow.setVisible(true); | ||
| } | } | ||
| | | ||
| public static void main(String[] args) { | public static void main(String[] args) { | ||
| - | | + | |
| - | | + | public void run() { |
| + | showGUI(); | ||
| + | } | ||
| + | | ||
| } | } | ||
| } | } | ||