Ajout d'événements à un composant

Vous pouvez ajouter un événement à un composant dans la vue Conception ou la vue Beans Java.

Pour ajouter un événement à un composant, procédez comme suit :
  1. A l'aide du bouton droit de la souris, cliquez sur le composant de votre choix dans la vue Beans Java ou Conception.
  2. Dans le menu en incrustation, cliquez sur Evénements. Le menu en incrustation affiche les événements préconisés pour le composant. Effectuez l'une des opérations suivantes :
    • Cliquez sur l'un des événements préconisés pour le composant. L'événement est ajouté au composant. Par exemple, pour un élément JFrame, les événements préconisés sont windowClosed et windowOpened.
    • Cliquez sur Ajouter des événements pour ouvrir la fenêtre correspondante.
  3. La fenêtre présente la liste des événements classés par catégorie. Sélectionnez l'événement à ajouter et cliquez sur Terminer.
    • La boîte de dialogue Ajout d'un événement indique tous les événements disponibles pour le composant dans une arborescence. Sous chaque entrée de module d'écoute figurent les rappels possibles qu'un événement peut générer.
      boîte de dialogue Ajout d'un événement
    • Vous pouvez utiliser la boîte de dialogue pour indiquer si vous souhaitez créer un module d'écoute ou utiliser un module existant. Lorsque la boîte de dialogue s'affiche, elle analyse les modules d'écoute existants et si elle considère que l'un d'entre eux peut être réutilisé, elle l'associe à une icône différente : classe événement présent si le module d'écoute existant étend la classe adaptateur ouévénement présent dans les autres cas. Au sein du module d'écoute, les événements existants sont affichés avec un flèche verte flèche verte et les événements disponibles sont affichés avec une flèche incomplète flèche incomplète.
    • Vous pouvez indiquer si vous souhaitez utiliser le module d'écoute existant ou en créer un autre. Lorsqu'un nouveau module est créé, vous pouvez indiquer s'il doit étendre la classe adaptateur ou simplement implémenter l'interface du module d'écoute. Si l'une des options n'est pas applicable, les boutons d'option sont désactivés. Par exemple, s'il n'existe pas de module d'écoute ou si un module d'écoute existant est sélectionné mais que l'événement choisi est déjà utilisé, l'option Utiliser le programme d'écoute existant est désactivée. S'il n'y a pas de classe adaptateur disponible pour une nouveau module d'écoute, le bouton d'option étend : NOM__CLASSE_ADAPTATEUR est désactivé.
    • Si vous sélectionnez propertyChange dans la boîte de dialogue Ajout d'un événement, vous disposez d'options supplémentaires pour ajouter un rappel. Vous pouvez créer un module d'écoute à ajouter au bean Java à l'aide de la méthode addPropertyChange(PropertyChangeListener listener). Dans ce cas, la méthode de rappel générique du module d'écoute propertyChange(PropertyChangeEvent event) est utilisée pour tous les événements de propriété.  Dans certains beans Java (tels que les composants Swing), la méthode à deux arguments addPropertyChange(String propertyName, PropertyChangeListener listener) est disponible et sélectionnée par défaut pour être utilisée avec le nouveau module d'écoute.

      boîte de dialogue Ajout d'un événement

      Un module d'écoute ajouté à l'aide de la méthode à deux arguments s'applique à une propriété spécifique et ne peut pas être réutilisé pour une autre propriété. Un module d'écoute ajouté à une méthode à un argument comporte une instruction if qui vérifie le nom de la propriété avant de traiter la logique de chaque rappel de propriété, comme indiqué dans le code ci-après.

      javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
          public void propertyChange(java.beans.PropertyChangeEvent e) {         
                   if ((e.getPropertyName().equals("font"))) {             
                         System.out.println("propertyChange(font)");         
                   }     
                }
          });

      Ce mécanisme permet d'utiliser un module PropertyChangeListener ajouté avec une méthode à un argument pour plusieurs propriétés (en utilisant plusieurs blocs if{}). 

Lorsque vous ajoutez un événement et qu'un module d'écoute existant peut être utilisé, la méthode de rappel est ajoutée. Sinon, un module d'écoute est créé. Pour utiliser un module d'écoute existant, il doit s'agir d'une classe interne anonyme pour le bean Java qui implémente l'interface du module d'écoute. Il doit disposer d'un corps de méthode vide pour la méthode de rappel ou étendre la classe d'adaptateur. Il ne doit pas disposer de méthode existante pour le rappel d'événement ajouté.Pour une propriété, un module PropertyChangeListener est réutilisé s'il est ajouté au bean Java avec la méthode à argument simple addPropertyChange(PropertyChangeListener listener). S'il ne dispose pas encore du code, le traitement de la propriété est ajouté.

S'il n'y pas pas de module d'écoute existant possible auquel la méthode de rappel peut être ajoutée, un nouveau module d'écoute est créé. Il s'agit d'un classe interne anonyme et si une classe adaptateur n'a pas été définie pour l'événement, le module d'écoute l'étend. Sinon, l'interface du module d'écoute est implémentée. Une fois que l'événement est ajouté, une méthode de raccord est créée avec un commentaire //TODO. La méthode de raccord indique le code source à exécuter lorsque l'événement se produit. Vous devez donc modifier cet élément pour obtenir le comportement approprié. Le commentaire //TODO s'affiche dans la fenêtre Tâches pour indiquer les méthodes incomplètes. Vous pouvez ainsi les localiser ultérieurement et supprimer le commentaire //TODO une fois que la logique de rappel a été écrite.

Dans l'exemple précédent, la méthode windowOpened existe déjà. S'il s'agit d'un module d'écoute qui étend l'adaptateur, le même module d'écoute est réutilisé car il ne dispose pas encore de la méthode windowClosed. La méthode windowClosed(WindowEvent e) est ajoutée et le raccord de méthode et le commentaire //TODO sont ajoutés comme indiqué ci-après :

this.addWindowListener(new java.awt.event.WindowAdapter() {     
        public void windowClosed(java.awt.event.WindowEvent e) {
         System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed()      
              }      
        public void windowOpened(java.awt.event.WindowEvent e) {         
             callExistingWindowOpenedLogic();     
            }
});

En mode spécialiste, les événements peuvent toujours être ajoutés au bean Java comme indiqué ci-dessus mais ils peuvent également être ajoutés à un module d'écoute dans l'arborescence Beans Java. Le menu Evénements affiche toutes les méthodes de rappel d'événement pour le module d'écoute et toutes celles qui sont déjà utilisées sont désactivées.

ajout d'une fenêtre fermée

Pour un module PropertyChangeListener, le menu en incrustation affiche toutes les propriétés liées pour le bean Java. Si certaines sont déjà utilisées par PropertyChangeListener, elles sont désactivées.

module d'écoute des modifications des propriétés

Un module d'écoute ajouté avec une méthode à un argument comporte une instruction if qui vérifie le nom de la propriété avant de traiter la logique de chaque rappel de propriété dans le code suivant :

javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
    public void propertyChange(java.beans.PropertyChangeEvent e) {         
             if ((e.getPropertyName().equals("font"))) {             
                   System.out.println("propertyChange(font)");         
             }     
          }
    });

Ce mécanisme permet d'utiliser un module PropertyChangeListener ajouté avec une méthode à un argument pour plusieurs propriétés (en utilisant plusieurs blocs if{}) et lorsque le deuxième rappel est ajouté, un nouveau bloc if{} est ajouté. 

Si le module propertyChangeListener est ajouté au bean Java à l'aide d'une méthode à deux arguments addPropertyChangeListener(String propertyName, PropertyChangeListener listener), il s'applique à une propriété spécifique et ne peut pas être réutilisé pour une autre propriété. Dans ce cas, tous les enfants du menu en cascade Evénements sont désactivés.

Rubrique parent : Traitement des événements avec l'éditeur visuel

Concepts connexes
Vue Beans Java

Tâches connexes
Suppression des événements d'un composant
Affichage des événements pour un composant
Affichage du code source pour un événement

(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.