swing:buttons_action_listeners

Buttons & Action Listeners (Εισαγωγικά)

Buttons

Ένα αντικείμενο τύπου Button δημιουργείται όπως είδαμε με χρήση της κλάση JButton ως εξής:

JButton endButton = new JButton("Click to end program");
endButton.addActionListener(new endProgramActionListener());
someJFrame.add(endButton);

,όπου το Button που δημιουργείται γράφει “Click to end program”. Ένα αντικείμενο JButton επίσης συνδέεται με έναν ή περισσότερα αντικείμενα του τύπου ActionListener τα οποία εκτελούνται όταν ο χρήστης αλληλεπιδρά με το Button αυτό. Τέλος, το κάθε Button θα πρέπει να ενσωματωθεί σε ένα παράθυρο (ή σε κάποιο panel όπως θα δούμε αργότερα) μέσα από μία δήλωση ανάλογη με την 3η γραμμή του παραπάνω κώδικα.

Η κλάση JButton συνδεέται με τα κουμπιά που εισάγει ο χρήστης και όχι με τα κουμπιά minimize, resize, close που βρίσκονται επάνω στο παράθυρο (για λειτουργικό σύστημα Windows επάνω δεξιά) και εισάγονται από το λειτουργικό σύστημα.

Action Listeners

Όταν ο χρήστης πατάει το ποντίκι του πάνω σε ένα κουμπί ενός παραθύρου δημιουργείται ένα αντικείμενο που αντιστοιχεί στο event που δημιούργησε ο χρήστης. Το αντικείμενο αυτό (event object) λαμβάνεται από ένα άλλο αντικείμενο που λειτουργεί ως ακροατής τέτοιων events και ονομάζεται listener. Το αντικείμενο listener όταν λάβει ένα event εκτελεί μία μέθοδο ως απάντηση στο συγκεκριμένο event. Η κλήση της συγκεκριμένης μεθόδου γίνεται ασύγχρονα πράγμα που σημαίνει ότι καλείστε να ορίσετε την μέθοδο, αλλά σε κανένα σημείο του προγράμματος σας δεν θα χρειαστεί να την καλέσετε. Συνοπτικά, κάθε πρόγραμμα οφείλει να προσδιορίσει ποια αντικείμενα τύπου ActionListener αποτελούν listeners για το συγκεκριμένο αντικείμενο.

Η μέθοδος που καλείται κάθε φορά από τα αντικείμενα τύπου Listener είναι η μέθοδος

void actionPerformed(ActionEvent e);

όπου ως παράμετρος λαμβάνεται το event που παράγεται από την διαπαφή του χρήστη με το αντικείμενο που δημιούργησε το event (μέχρι τώρα είδαμε αντικείμενα τύπου button).

swing/buttons_action_listeners.txt · Last modified: 2016/02/26 11:15 (external edit)