Maison >Java >javaDidacticiel >Quel est le processus de traitement des événements implémenté par Java AWT ?

Quel est le processus de traitement des événements implémenté par Java AWT ?

王林
王林avant
2023-05-04 17:52:161452parcourir

    Traitement des événements AWT

    Le traitement des événements consiste principalement à répondre aux opérations de l'utilisateur

    • Objet Event (Event) : encapsule un événement spécifique qui se produit sur le composant GUI (généralement une opération de l'utilisateur).

    • Source d'événement (composant) : L'endroit où l'événement se produit, généralement le composant qui génère l'événement

    • Listener (Listener) : Responsable de la surveillance des événements qui se produisent sur la source d'événement et du traitement de divers événements en conséquence Objet ( l'objet contient des gestionnaires d'événements).

    • Gestionnaire d'événement : l'objet écouteur gère l'objet événement reçu en conséquence.

    Diagramme d'héritage d'événements dans AWT

    Java AWT实现事件处理流程是什么

    Créez une classe d'écoute d'événements MyWindowListener qui implémente l'interface WindowListener dans le programme. Après avoir lié la fenêtre à l'objet écouteur via la méthode addWindowListener(), cliquez sur le bouton Fermer pour déclencher le. Méthode windowClosing() de l'objet écouteur, masquant et libérant la fenêtre actuelle, fermant ainsi la fenêtre.

    Le code est le suivant

     package AWT;
     import java.awt.*;
     import java.awt.event.WindowEvent;
     import java.awt.event.WindowListener;
     public class Example08 {
         public static void main(String[] args) {
             Frame f=new Frame("我的世界");
             f.setSize(400,300);
             f.setLocation(300,200);
             f.setVisible(true);
             //给窗口注册一个监听器
             MyWindowListener mw=new MyWindowListener();
             f.addWindowListener(mw);
         }
     }
     class MyWindowListener implements WindowListener{
         @Override
         public void windowOpened(WindowEvent e) {
         }
         @Override
         public void windowClosing(WindowEvent e) {
             Window window= e.getWindow();
             window.setVisible(false);
             window.dispose();
         }
         @Override
         public void windowClosed(WindowEvent e) {
         }
         @Override
         public void windowIconified(WindowEvent e) {
         }
         @Override
         public void windowDeiconified(WindowEvent e) {
     
         }
         @Override
         public void windowActivated(WindowEvent e) {
         }
         @Override
         public void windowDeactivated(WindowEvent e) {
         }
     }

    Result

    Java AWT实现事件处理流程是什么

    Event Adapter

    Afin de résoudre le problème de l'implémentation vide des méthodes générées, jdk fournit des classes d'adaptateur, qui sont les classes d'implémentation par défaut de l'interface d'écoute, et sont implémentées dans ces classes d'implémentation. Toutes les méthodes dans l'interface, mais il n'y a pas de code dans la méthode, le programme peut atteindre l'objectif d'implémenter l'interface d'écoute en héritant de la classe adaptateur.

     package AWT;
     import java.awt.*;
     import java.awt.Frame;
     import java.awt.event.WindowAdapter;
     import java.awt.event.WindowEvent;
     import java.awt.event.WindowListener;
     public class Example08 {
         public static void main(String[] args) {
             Frame f=new Frame("我的世界");
             f.setSize(400,300);
             f.setLocation(300,200);
             f.setVisible(true);
            //给窗口注册一个监听器
             MyWindowListener mw=new MyWindowListener();
             f.addWindowListener(mw);
         }
     }
              //继承WindowAdapter类,重写windowClosing()方法
     class MyWindowListener1 extends WindowAdapter {
     
         @Override
         public void windowClosing(WindowEvent e) {
             Window window=(Window) e.getComponent();
             window.dispose();
         }
     }

    Puisque la classe MyWindowListener hérite de la classe d'adaptateur WindowAdapter et que la fonction consiste à fermer la fenêtre, il vous suffit de réécrire la méthode windowClosing(). Presque toutes les interfaces d'écoute ont des classes d'adaptateur correspondantes, et la surveillance est implémentée en héritant de la méthode windowClosing(). classe d'adaptateur. Lorsque vous utilisez l'interface du contrôleur, si vous devez gérer ces événements, vous pouvez directement remplacer la méthode correspondant à l'événement.

    Utilisez des classes internes anonymes pour implémenter le traitement des événements

    Dans l'adaptateur d'événements ci-dessus, l'objet source d'événement est surveillé en héritant de la classe de l'adaptateur. Cependant, pour la simplicité du code, des classes internes anonymes peuvent être utilisées pour créer des objets d'écoute d'événements. et surveiller les événements qui se produisent.

    Ajoutez un bouton avec un événement de clic à la fenêtre

     package AWT;
     import java.awt.*;
     import java.awt.event.MouseAdapter;
     import java.awt.event.MouseEvent;
     public class NiMing {
         public static void main(String[] args) {
             Frame f=new Frame("我的世界");
             f.setSize(400,300);
             f.setLocation(300,200);
             f.setVisible(true);
             Button btn=new Button("Exit");
             f.add(btn);
             btn.addMouseListener(new MouseAdapter() {
                 @Override
                 public void mouseClicked(MouseEvent e) {
                     System.exit(0);
                 }
             });
         }
     }

    Tout d'abord, la méthode addMouseListner() de btn est appelée Dans cette méthode, un écouteur d'événement de souris est enregistré pour le bouton en utilisant la méthode de classe interne anonyme, car seul le bouton est enregistré. Le bouton doit être surveillé. Pour les événements de clic, la classe d'adaptateur MouseAdapter est utilisée et la méthode mouseClicked() est remplacée. Lorsque vous cliquez sur le bouton, l'événement de clic est transmis à l'écouteur d'événement en tant qu'objet et le programme est quitté.

    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:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer