swing:first_program
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| swing:first_program [2018/03/20 17:48] – created gthanos | swing:first_program [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| Παρακάτω φτιάχνουμε ένα πρώτο απλό παραθυρικό πρόγραμμα το οποίο έχει μόνο ένα κουμπί που τερματίζει την εφαρμογή. Κατεβάστε και τρέξτε τα επόμενα δύο αρχεία. | Παρακάτω φτιάχνουμε ένα πρώτο απλό παραθυρικό πρόγραμμα το οποίο έχει μόνο ένα κουμπί που τερματίζει την εφαρμογή. Κατεβάστε και τρέξτε τα επόμενα δύο αρχεία. | ||
| - | <code java FirstWindow.java> | + | <code java FirstSwingDemo.java> |
| import javax.swing.JFrame; | import javax.swing.JFrame; | ||
| import javax.swing.JButton; | import javax.swing.JButton; | ||
| + | import java.awt.event.*; | ||
| - | public class FirstWindow | + | public class FirstSwingDemo |
| public static final int WIDTH = 300; | public static final int WIDTH = 300; | ||
| public static final int HEIGHT = 200; | public static final int HEIGHT = 200; | ||
| Line 17: | Line 18: | ||
| firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
| JButton endButton = new JButton(" | JButton endButton = new JButton(" | ||
| - | | + | |
| + | ActionListener | ||
| + | public void actionPerformed(ActionEvent e) { | ||
| + | System.exit(0); | ||
| + | } | ||
| + | }; | ||
| + | | ||
| endButton.addActionListener(buttonEar); | endButton.addActionListener(buttonEar); | ||
| firstWindow.add(endButton); | firstWindow.add(endButton); | ||
| + | firstWindow.pack(); | ||
| firstWindow.setVisible(true); | firstWindow.setVisible(true); | ||
| } | } | ||
| Line 29: | Line 37: | ||
| } | } | ||
| }); | }); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | <code java EndingListener.java> | ||
| - | import java.awt.event.*; | ||
| - | |||
| - | public class EndingListener implements ActionListener { | ||
| - | public void actionPerformed(ActionEvent e) { | ||
| - | System.exit(0); | ||
| } | } | ||
| } | } | ||
| Line 54: | Line 52: | ||
| Από την εμπειρία σας γνωρίζετε ότι όταν πατήσετε το κουμπί για το κλείσιμο του παραθύρου τότε το παράθυρο κλείνει και η εφαρμογή τερματίζεται. Η παρακάτω γραμμή διαχειρίζεται διαφορετικά ένα click event στο κουμπί κλεισίματος του παραθύρου, | Από την εμπειρία σας γνωρίζετε ότι όταν πατήσετε το κουμπί για το κλείσιμο του παραθύρου τότε το παράθυρο κλείνει και η εφαρμογή τερματίζεται. Η παρακάτω γραμμή διαχειρίζεται διαφορετικά ένα click event στο κουμπί κλεισίματος του παραθύρου, | ||
| <code java> | <code java> | ||
| - | firstWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | + | |
| </ | </ | ||
| Στην συνέχεια ορίζουμε ένα αντικείμενο τύπου JButton (κουμπί) με τίτλο "Click to end program." | Στην συνέχεια ορίζουμε ένα αντικείμενο τύπου JButton (κουμπί) με τίτλο "Click to end program." | ||
| <code java> | <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(" | JButton endButton = new JButton(" | ||
| - | | ||
| ActionListener buttonEar = new ActionListener() { | ActionListener buttonEar = new ActionListener() { | ||
| public void actionPerformed(ActionEvent e) { | public void actionPerformed(ActionEvent e) { | ||
| System.exit(0); | System.exit(0); | ||
| } | } | ||
| - | }; | + | }; |
| - | + | ||
| endButton.addActionListener(buttonEar); | endButton.addActionListener(buttonEar); | ||
| + | </ | ||
| + | |||
| + | Προσθέτουμε το κουμπί στο παράθυρο και ορίζουμε ότι το παράθυρο που φτιάξαμε θέλουμε να είναι ορατό. | ||
| + | <code java> | ||
| firstWindow.add(endButton); | firstWindow.add(endButton); | ||
| + | firstWindow.pack(); | ||
| firstWindow.setVisible(true); | firstWindow.setVisible(true); | ||
| - | } | ||
| - | | ||
| - | public static void main(String[] args) { | ||
| - | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
| - | public void run() { | ||
| - | showGUI(); | ||
| - | } | ||
| - | }); | ||
| - | } | ||
| - | } | ||
| </ | </ | ||
| - | ===== Παραλλαγή - Το παραπάνω παράθυρο ως αυτόνομη κλάση ===== | + | Το πρόγραμμα εκκινεί μέσω της στατικής μεθόδου |
| - | + | <code 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) { | public static void main(String[] args) { | ||
| javax.swing.SwingUtilities.invokeLater(new Runnable() { | javax.swing.SwingUtilities.invokeLater(new Runnable() { | ||
| Line 147: | Line 82: | ||
| }); | }); | ||
| } | } | ||
| - | } | ||
| </ | </ | ||
| - | ===== Βασικές μέθοδοι της κλάσης JFrame ===== | + | | Προηγούμενο: |
| - | + | ||
| - | Οι βασικές | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * JFrame.**DO_NOTHING_ON_CLOSE**: | + | |
| - | * JFrame.**HIDE_ON_CLOSE**: Κρύβει το παράθυρο αφού εκτελέσει πιθανώς ορισμένους window listeners. Το παράθυρο δεν είναι δυνατόν να ανακτηθεί, | + | |
| - | * JFrame.**DISPOSE_ON_CLOSE**: Τερματίζει το τρέχον παράθυρο. Αν υπάρχουν και άλλα παράθυρα αυτά παραμένουν, | + | |
| - | * JFrame.**EXIT_ON_CLOSE**: Τερματίζει το τρέχον παράθυρο και συνολικά την εφαμοργή (αν υπάρχουν και άλλα παράθυρα τερματίζουν και αυτά). | + | |
| - | <WRAP tip 80% center round> | ||
| - | Η μέθοδος '' | ||
| - | </ | ||
swing/first_program.1521568097.txt.gz · Last modified: 2018/03/20 17:48 (external edit)
