Παράδειγμα 28 - Τα Συμβάντα Χρήστη

Η απόκριση στα συμβάντα χρήστη (user events) σ' ένα πρόγραμμα της Java απαιτεί την χρήση ενός ή περισσοτέρων EventListener interfaces. Οι τάξεις ακρόασης (listening classes) αποτελούν μέρος του πακέτου java.awt.event και μπορούμε να τις κάνουμε διαθέσιμες με την εξής εντολή :
import java.awt.event.*;
Πρέπει επίσης να χρησιμοποιήσουμε την εντολή implements για να δηλώσουμε ότι θα χρησιμοποιήσουμε ένα ή περισσότερα listening interfaces. Η επόμενη εντολή δημιουργεί μια τάξη που χρησιμοποιεί το ActionListener, το οποίο είναι ένα interface που χρησιμοποιείται με πλήκτρα εντολής (buttons) και άλλα συστατικά.
{ ... }
Το EventListener interface δίνει την δυνατότητα σ' ένα συστατικό ενός γραφικού interface χρήστη να παράγει συμβάντα χρήστη. Ενα πρόγραμμα πρέπει να περιλαμβάνει ένα listener interface για κάθε τύπο συστατικού που επιθυμεί να ακούσει, ως εξής :
{ ... }
Αφού έχουμε δημιουργήσει το interface που απαιτείται για ένα συγκεκριμένο συστατικό, θα πρέπει να ορίσουμε αυτό το συστατικό ώστε να δημιουργεί συμβάντα χρήστη. Για να κάνουμε ένα πλήκτρο εντολής (button) να παράγει ένα συμβάν, χρησιμοποιούμε την μέθοδο addActionListener(), ως εξής :
Οταν παράγεται ένα συμβάν χρήστη από ένα συστατικό που περιέχει έναν listener, θα κληθεί αυτόματα μια μέθοδος. Αυτές οι μέθοδοι πρέπει να βρίσκονται στην τάξη που καθορίσθηκε όταν ο listener προστέθηκε στο συστατικό.
Ο κάθε listener διαθέτει διαφορετικές μεθόδους που καλούνται για να συλλάβουν τα συμβάντά τους. Για παράδειγμα, το ActionListener interface στέλνει συμβάντα σε μια τάξη που καλείται actionPerformed(), ως εξής :
{ ... }
Ολα τα συμβάντα ενέργειας που στέλνονται σ' αυτό το πρόγραμμα θα πάνε σ' αυτήν την μέθοδο. Στην συγκεκριμένη περίπτωση στέλνουμε ένα αντικείμενο με όνομα e της τάξης ActionEvent στην μέθοδο actionPerformed(). Υπάρχουν πολλές διαφορετικές τάξεις αντικειμένων που αντιπροσωπεύουν τα συμβάντα χρήστη που μπορούν να σταλούν σ' ένα πρόγραμμα.
Αυτές οι τάξεις έχουν μεθόδους που μπορούμε να χρησιμοποιήσουμε για να βρούμε ποιο συστατικό προκάλεσε την εκτέλεση του συμβάντος. Στην μέθοδο actionPerformed() μπορούμε να αναγνωρίσουμε το συστατικό αυτό με την εξής εντολή :
Η μέθοδος getActionCommand() επιστρέφει ένα string και αν το συστατικό είναι ένα πλήκτρο εντολής (button), η τιμή του string θα είναι η ετικέτα (label, caption) του πλήκτρου εντολής, ενώ αν το συστατικό είναι ένα πλαίσιο κειμένου (text field), η τιμή του string θα είναι το κείμενο που έχει καταχωρηθεί στο πλαίσιο κειμένου.
Με την μέθοδο getSource() μπορούμε να μάθουμε το αντικείμενο που προκάλεσε το συμβάν, ως εξής :
- Λέξεις κλειδιά: