swing:events
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
swing:events [2018/03/20 18:29] – [Οι βασικοί τύποι των διαφορετικών Event] gthanos | swing:events [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Events και Listeners ====== | + | ====== Events και |
Όταν ο χρήστης πατήσει ένα πλήκτρο από το πληκτρολόγιο ή μετακινήσει το ποντίκι, | Όταν ο χρήστης πατήσει ένα πλήκτρο από το πληκτρολόγιο ή μετακινήσει το ποντίκι, | ||
Line 5: | Line 5: | ||
Ο **//window manager//** δημιουργεί //events// για κάθε απειροελάχιστη μεταβολή της θέσης του ποντικιού ή για το πάτημα ενός κουμπιού από το πληκτρολόγιο. Τα περισσότερα προγράμματα δεν τα ενδιαφέρει το σύνολο των //events// που παράγονται. Προκειμένου ένα πρόγραμμα να μην " | Ο **//window manager//** δημιουργεί //events// για κάθε απειροελάχιστη μεταβολή της θέσης του ποντικιού ή για το πάτημα ενός κουμπιού από το πληκτρολόγιο. Τα περισσότερα προγράμματα δεν τα ενδιαφέρει το σύνολο των //events// που παράγονται. Προκειμένου ένα πρόγραμμα να μην " | ||
- | Θα πρέπει να τονίσουμε ότι υπάρχουν διαφορετικοί τύποι event για κάθε διαφορετικό τύπο αλληλεπίδρασης του χρήστης με το γραφικό περιβάλλον. Για παράδειγμα, | + | Θα πρέπει να τονίσουμε ότι υπάρχουν διαφορετικοί τύποι event για κάθε διαφορετικό τύπο αλληλεπίδρασης του χρήστη με το γραφικό περιβάλλον. Για παράδειγμα, |
Η εικόνα που ακολουθεί συνοψίζει την διαδικασία για την εφαρμογή της προηγούμενης ενότητας που περιέχει μόνο ένα κουμπί (// | Η εικόνα που ακολουθεί συνοψίζει την διαδικασία για την εφαρμογή της προηγούμενης ενότητας που περιέχει μόνο ένα κουμπί (// | ||
{{ : | {{ : | ||
+ | |||
===== Οι βασικοί τύποι των διαφορετικών Event ===== | ===== Οι βασικοί τύποι των διαφορετικών Event ===== | ||
- | Όλα τα events που μας ενδιαφέρουν κληρονομούν την κλάση **[[https:// | + | Τα περισσότερα από τα //events// που μας ενδιαφέρουν κληρονομούν την κλάση **[[https:// |
- | Οι κλάσεις των events βρίσκονται μέσα στο πακέτο **java.awt.event**. Οι κυριότεροι τύποι event είναι οι εξής: | + | Οι κλάσεις των events βρίσκονται μέσα στα πακέτα [[https:// |
* **[[https:// | * **[[https:// | ||
- | * **[[https:// | + | |
+ | | ||
* **public int getKeyCode(): | * **public int getKeyCode(): | ||
* **public char getKeyChar(): | * **public char getKeyChar(): | ||
Line 26: | Line 28: | ||
- Ο δρομέας του ποντικιού εξάγεται από περιοχή που συμπίπτει με το // | - Ο δρομέας του ποντικιού εξάγεται από περιοχή που συμπίπτει με το // | ||
- Ο δρομέας του ποντικιού μετακινείται πάνω σε περιοχή που συμπίπτει με το // | - Ο δρομέας του ποντικιού μετακινείται πάνω σε περιοχή που συμπίπτει με το // | ||
- | - Ο δρομέας του ποντικιού μετακινείται έχοντας παράλληλα πατημένο το αριστερό πλήκτρο | + | - Ο δρομέας του ποντικιού μετακινείται έχοντας παράλληλα πατημένο το αριστερό πλήκτρο σέρνωντας (drags) ένα // |
* Οι κυριότερες μέθοδοι της κλάσης **[[https:// | * Οι κυριότερες μέθοδοι της κλάσης **[[https:// | ||
* **public int getButton(): | * **public int getButton(): | ||
Line 43: | Line 45: | ||
===== Event Listeners ===== | ===== Event Listeners ===== | ||
- | Για τον πιάσιμο των παραπάνω τύπων events, η Java ορίζει ένα σύνολο από interfaces, τα οποία τα οποία όταν υλοποιούνται από μία κλάση και συνδυαστούν με κάποιο από τα // | + | Για τον πιάσιμο των παραπάνω τύπων events, η Java ορίζει ένα σύνολο από interfaces, τα οποία τα οποία όταν υλοποιούνται από μία κλάση και συνδυαστούν με κάποιο από τα // |
Οι κυριότεροι Event Listeners είναι οι εξής: | Οι κυριότεροι Event Listeners είναι οι εξής: | ||
* **[[https:// | * **[[https:// | ||
* **void actionPerformed(ActionEvent e)**: | * **void actionPerformed(ActionEvent e)**: | ||
+ | * **[[https:// | ||
* **[[https:// | * **[[https:// | ||
* **void keyTyped(KeyEvent e):** Η μέθοδος καλείται εάν πατηθεί ένα πλήκτρο ή συνδυασμός πλήκτρων που αντιστοιχεί σε εκτυπώσιμο χαρακτήρα. Δεν έχει σημασία εάν το πλήκτρο έχει ελευθερωθεί ή όχι, αρκεί να έχει σηματοδοτηθεί η παραγωγή του χαρακτήρα προς την εφαρμογή. | * **void keyTyped(KeyEvent e):** Η μέθοδος καλείται εάν πατηθεί ένα πλήκτρο ή συνδυασμός πλήκτρων που αντιστοιχεί σε εκτυπώσιμο χαρακτήρα. Δεν έχει σημασία εάν το πλήκτρο έχει ελευθερωθεί ή όχι, αρκεί να έχει σηματοδοτηθεί η παραγωγή του χαρακτήρα προς την εφαρμογή. | ||
* **void keyPressed(KeyEvent e):** Η μέθοδος καλείται εάν πατηθεί οποιοδήποτε πλήκτρο. | * **void keyPressed(KeyEvent e):** Η μέθοδος καλείται εάν πατηθεί οποιοδήποτε πλήκτρο. | ||
- | * **void | + | * **void |
- | * **[[https:// | + | * **[[https:// |
- | * **void mouseClicked(MouseEvent e):** Καλείται όταν πατηθεί ένα κουμπί του ποντικιού (πατηθεί και απελευθερωθεί) | + | * **void mouseClicked(MouseEvent e):** Καλείται όταν πατηθεί ένα κουμπί του ποντικιού (πατηθεί και απελευθερωθεί) |
- | * **void mousePressed(MouseEvent e):** Καλείται όταν πατηθεί ένα κουμπί του ποντικιού πάνω σε ένα | + | * **void mousePressed(MouseEvent e):** Καλείται όταν πατηθεί ένα κουμπί του ποντικιού πάνω στο στοιχείο (// |
- | * **void mouseReleased(MouseEvent e):** Καλείται όταν έχει ελευθερωθεί ένα κουμπί του ποντικιού που προηγουμένως πατήθηκε πάνω σε ένα | + | * **void mouseReleased(MouseEvent e):** Καλείται όταν έχει ελευθερωθεί ένα κουμπί του ποντικιού που προηγουμένως πατήθηκε πάνω στο στοιχείο (// |
- | * **void mouseEntered(MouseEvent e):** Καλείται όταν το ποντίκι μπαίνει στην περιοχή | + | * **void mouseEntered(MouseEvent e):** Καλείται όταν το ποντίκι μπαίνει στην περιοχή |
- | * **void mouseExited(MouseEvent e):** Καλείται όταν το ποντίκι βγαίνει στην περιοχή | + | * **void mouseExited(MouseEvent e):** Καλείται όταν το ποντίκι βγαίνει στην περιοχή |
* **[[https:// | * **[[https:// | ||
* **void mouseDragged(MouseEvent e):** Καλείται όταν πατηθεί ένα κουμπί του ποντικιού πάνω σε ένα στοιχείο και στη συνέχεια συρθεί. Τα συμβάντα MOUSE_DRAGGED θα συνεχίσουν να παραδίδονται στο στοιχείο όπου σύρεται, | * **void mouseDragged(MouseEvent e):** Καλείται όταν πατηθεί ένα κουμπί του ποντικιού πάνω σε ένα στοιχείο και στη συνέχεια συρθεί. Τα συμβάντα MOUSE_DRAGGED θα συνεχίσουν να παραδίδονται στο στοιχείο όπου σύρεται, | ||
Line 70: | Line 73: | ||
===== Παράδειγμα - Πιάνοντας ένα event μέσω ενός Event Listener | ===== Παράδειγμα - Πιάνοντας ένα event μέσω ενός Event Listener | ||
- | Παρακάτω δίνεται το παράδειγμα της κλάσης EventHandling, | + | Παρακάτω δίνεται το παράδειγμα της κλάσης EventHandling, |
- | * **ActionEvent: ** Μετράει πόσες φορές έχει γίνει click το κουμπί στα δεξιά. | + | * **Button Clicks: ** Μετράει πόσες φορές έχει γίνει click το κουμπί στα δεξιά. |
- | * **KeyEvent: ** Δηλώνει ποιος χαρακτήρας πατήθηκε κάθε φορά όταν το focus είναι στο συγκεκριμένο textfield. | + | * **Keyboard Input: ** Δηλώνει ποιος χαρακτήρας πατήθηκε κάθε φορά όταν το focus είναι στο συγκεκριμένο textfield. |
- | * **MouseEvent: ** Δηλώνει τη ποιο κουμπί του mouse πατήθηκε και σε ποια θέση μέσα στο παράθυρο. To ποντίκι θα πρέπει να πατηθεί ΕΚΤΟΣ textfield και button. | + | * **Mouse current position on window:** Δηλώνει τη θέση του δρομέα του ποντικιού εντός της εφαρμογής. |
- | * **MouseMotionEvent:** Δηλώνει τη θέση του δρομέα του ποντικιού εντός της εφαρμογής. | + | |
Το κουμπί εμφανίζει διαφορετικά μηνύματα όταν ο δρομέας του ποντικιού βρίσκεται πάνω από αυτό, απομακρύνεται ή γίνεται //click//. | Το κουμπί εμφανίζει διαφορετικά μηνύματα όταν ο δρομέας του ποντικιού βρίσκεται πάνω από αυτό, απομακρύνεται ή γίνεται //click//. | ||
Line 90: | Line 93: | ||
JTextField actionEventTextField; | JTextField actionEventTextField; | ||
JTextField keyEventTextField; | JTextField keyEventTextField; | ||
- | JTextField mouseEventTextField; | ||
JTextField mouseMotionEventTextField; | JTextField mouseMotionEventTextField; | ||
int buttonClickedCount; | int buttonClickedCount; | ||
Line 99: | Line 101: | ||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
| | ||
- | button = new JButton(" | + | button = new JButton(" |
button.setBackground(new Color(0xe9, | button.setBackground(new Color(0xe9, | ||
- | | + | |
+ | Border buttonBorder = BorderFactory.createRaisedBevelBorder(); | ||
button.setBorder(buttonBorder); | button.setBorder(buttonBorder); | ||
| | ||
Line 116: | Line 119: | ||
} | } | ||
public void mouseEntered(MouseEvent e) { | public void mouseEntered(MouseEvent e) { | ||
- | button.setText(" | + | button.setText(" |
} | } | ||
public void mouseExited(MouseEvent e) { | public void mouseExited(MouseEvent e) { | ||
- | button.setText(" | + | button.setText(" |
} | } | ||
public void mousePressed(MouseEvent e) { | public void mousePressed(MouseEvent e) { | ||
Line 125: | Line 128: | ||
} | } | ||
public void mouseReleased(MouseEvent e) { | public void mouseReleased(MouseEvent e) { | ||
- | button.setText(" | + | button.setText(" |
} | } | ||
}); | }); | ||
- | + | | |
- | frame.addMouseListener( new MouseListener() { | + | |
- | public void mouseClicked(MouseEvent e) { | + | |
- | switch(e.getButton()) { | + | |
- | case MouseEvent.BUTTON1: | + | |
- | mouseEventTextField.setText(" | + | |
- | break; | + | |
- | case MouseEvent.BUTTON2: | + | |
- | mouseEventTextField.setText(" | + | |
- | break; | + | |
- | case MouseEvent.BUTTON3: | + | |
- | mouseEventTextField.setText(" | + | |
- | break; | + | |
- | } | + | |
- | } | + | |
- | public void mouseEntered(MouseEvent e) { | + | |
- | } | + | |
- | public void mouseExited(MouseEvent e) { | + | |
- | } | + | |
- | public void mousePressed(MouseEvent e) { | + | |
- | } | + | |
- | public void mouseReleased(MouseEvent e) { | + | |
- | } | + | |
- | }); | + | |
- | | + | |
frame.add(button, | frame.add(button, | ||
- | textFieldPanel = new JPanel(new GridLayout(4, 2, 3, 3)); | + | textFieldPanel = new JPanel(new GridLayout(5, 2, 3, 3)); |
| | ||
- | textFieldPanel.add(new JLabel(" | + | textFieldPanel.add(new JLabel(" |
actionEventTextField = new JTextField("", | actionEventTextField = new JTextField("", | ||
textFieldPanel.add(actionEventTextField); | textFieldPanel.add(actionEventTextField); | ||
| | ||
- | textFieldPanel.add(new JLabel(" | + | textFieldPanel.add(new JLabel(" |
keyEventTextField = new JTextField("", | keyEventTextField = new JTextField("", | ||
keyEventTextField.addKeyListener( new KeyListener() { | keyEventTextField.addKeyListener( new KeyListener() { | ||
Line 181: | Line 160: | ||
} | } | ||
}); | }); | ||
- | textFieldPanel.add(keyEventTextField); | + | textFieldPanel.add(keyEventTextField); |
| | ||
- | textFieldPanel.add(new JLabel(" | + | textFieldPanel.add(new JLabel(" |
- | mouseEventTextField = new JTextField("", | + | |
- | textFieldPanel.add(mouseEventTextField); | + | |
- | + | ||
- | textFieldPanel.add(new JLabel(" | + | |
mouseMotionEventTextField = new JTextField("", | mouseMotionEventTextField = new JTextField("", | ||
frame.addMouseMotionListener( new MouseMotionListener() { | frame.addMouseMotionListener( new MouseMotionListener() { | ||
Line 205: | Line 180: | ||
| | ||
public static void main(String []args) { | public static void main(String []args) { | ||
- | new EventHandling(); | + | |
+ | public void run() { | ||
+ | new EventHandling(); | ||
+ | } | ||
+ | }); | ||
} | } | ||
} | } | ||
</ | </ | ||
+ | |||
+ | | Προηγούμενο: | ||
swing/events.1521570591.txt.gz · Last modified: 2018/03/20 18:29 (external edit)