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:31] – [Οι βασικοί τύποι των διαφορετικών 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.1521570669.txt.gz · Last modified: 2018/03/20 18:31 (external edit)
