Maison >Java >javaDidacticiel >Explication détaillée de la méthode Java de gestion des événements de clic sur les boutons

Explication détaillée de la méthode Java de gestion des événements de clic sur les boutons

巴扎黑
巴扎黑original
2017-04-17 10:45:007973parcourir

L'éditeur suivant vous apportera une méthode de gestion des événements de clic sur un bouton en Java. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil

Différentes sources d'événements peuvent générer différents types d'événements. Par exemple, un bouton peut envoyer un objet ActionEvent et une fenêtre peut envoyer un objet WindowEvent.

Aperçu du mécanisme de traitement du temps AWT :

1. spécifique Une instance de la classe d'interface d'écoute.

2. La source d'événement est un objet qui peut enregistrer des objets d'écoute et envoyer des objets d'événement.

3. Lorsqu'un événement se produit, la source de l'événement transmet l'objet événement à tous les auditeurs enregistrés.

4. L'objet écouteur utilisera les informations contenues dans l'objet événement pour décider comment répondre à l'événement.

Voici un exemple d'auditeur :


ActionListener listener = ...;
JButton button = new JButton("OK");
button.addActionListener(listener);

Maintenant, chaque fois que le bouton est généré Un "événement d'action", l'objet écouteur sera notifié. Pour les boutons, tel que nous y pensons, l'événement d'action consiste à cliquer sur le bouton.

Afin d'implémenter l'interface ActionListener, la classe d'écoute doit avoir une méthode appelée actionPerformed, qui reçoit un paramètre d'objet ActionEvent.


class MyListener implements ActionListener
{
 ...;
 public void actionPerformed(ActionEvent event)
 {
   //reaction to button click goes here
 }
}

Tant que l'utilisateur clique sur le bouton, l'objet JButton créera un objet ActionEvent puis appellera Listener.actionPerformed(event) pour transmettre l'objet événement. Plusieurs objets d'écoute peuvent être ajoutés à une source d'événement comme un bouton. De cette façon, chaque fois que l'utilisateur clique sur le bouton, celui-ci appellera la méthode actionPerformed de tous les écouteurs.

Exemple : Gestion d'un événement de clic sur un bouton

Afin d'approfondir la compréhension du modèle de délégation d'événement, voici un exemple simple de réponse à un événement de clic sur un bouton Expliquez les détails que vous devez connaître. Dans cet exemple, vous souhaitez placer trois boutons dans un panneau et ajouter trois objets d'écoute pour agir en tant qu'écouteurs d'action pour les boutons.

Dans ce cas, tant que l'utilisateur clique sur n'importe quel bouton du panneau, l'objet écouteur associé recevra un objet ActionEvent, qui indique qu'un bouton a été cliqué. Dans l'exemple de programme, l'objet écouteur modifie la couleur d'arrière-plan du panneau.

Avant de montrer comment écouter les événements de clic sur un bouton, nous devons d'abord expliquer comment créer des boutons et comment les ajouter au panneau.

Un bouton peut être créé en spécifiant une chaîne d'étiquette, une icône ou les deux dans le constructeur de bouton. Voici deux exemples :


JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton(new ImageIcon("blue-ball.gif"));

L'ajout d'un bouton à un panneau nécessite d'appeler la méthode add :


JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton("Blue");
JButton redButton = new JButton("Red");

buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
buttonPanel.add(redButton);

À ce stade, vous savez comment ajouter des boutons au panneau. Ensuite, vous devez ajouter le code qui permet au panneau d'écouter ces boutons. Cela nécessite une classe qui implémente l'interface ActionListener. Comme mentionné précédemment, vous devez inclure une méthode actionPerformed avec la signature :

public void actionPerformed(ActionEvent event)

Lorsque vous cliquez sur le bouton, vous souhaitez définir la couleur d'arrière-plan du panneau sur la couleur spécifiée. Cette couleur est stockée dans la classe d'écoute :


class ColorAction implements ActionListener
{
  public ColorAction(Color c)
  {
   backgroundColor = c;
  }
  public void actionPerformed(actionEvent event)
  {
   //set panel background color
   }
   private Color backgroundColor;
}

Ensuite, construisez un objet pour chaque couleur et définissez ces objets comme boutons d'écoute.


ColorAction yelloAction = new ColorAction(Color.YELLOW);
ColorAction blueAction = new ColorAction(Color.BLUE);
ColorAction redAction = new ColorAction(Color.RED);

yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
redButton.addActionListener(redAction);

Par exemple, si un utilisateur clique sur le bouton intitulé "Jaune", la méthode actionPerformed de l'objet yellowAction sera appelée. Le champ d'instance backgroundColor de cet objet est défini sur Color.YELLOW. Définissez maintenant la couleur d'arrière-plan du panneau sur jaune.

Il y a un autre problème à considérer ici. Les objets ColorAction ne peuvent pas accéder aux variables du panneau de boutons. Ce problème peut être résolu de deux manières. L'une consiste à stocker le panneau dans l'objet ColorAction et à le définir dans le constructeur de ColorAction ; l'autre consiste à faire de ColorAction une classe interne de la classe ButtonPanel, afin que ses méthodes aient automatiquement accès au panneau externe.

Ce qui suit explique comment placer la classe ColorAction dans la classe ButtonFrame.


class ButtonFrame extends JFrame
{
 ...
 private class ColorAction implents ActionListener
 {
  ...
  public void actionPerformed(ActionEvent event)
  {
    buttonPanel.setBackground(backgroundColor);
  }
  private Color backgroundColor;
  }
  private Jpanel buttonPanel; 
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn