Heim  >  Artikel  >  Java  >  Was ist der von Java AWT implementierte Ereignisverarbeitungsprozess?

Was ist der von Java AWT implementierte Ereignisverarbeitungsprozess?

王林
王林nach vorne
2023-05-04 17:52:161373Durchsuche

    AWT-Ereignisverarbeitung

    Die Ereignisverarbeitung dient hauptsächlich der Reaktion auf Benutzervorgänge.

    • Ereignisobjekt (Ereignis): Kapselt ein bestimmtes Ereignis, das auf der GUI-Komponente auftritt (normalerweise eine Operation des Benutzers).

    • Ereignisquelle (Komponente): Der Ort, an dem das Ereignis auftritt, normalerweise die Komponente, die das Ereignis generiert

    • Listener (Listener): Verantwortlich für die Überwachung von Ereignissen, die in der Ereignisquelle auftreten, und die entsprechende Verarbeitung verschiedener Ereignisse. Objekt ( das Objekt enthält Event-Handler).

    • Ereignishandler: Das Listener-Objekt behandelt das empfangene Ereignisobjekt entsprechend.

    Ereignisvererbungsdiagramm in AWT

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

    Erstellen Sie eine Ereignis-Listener-Klasse MyWindowListener, die die WindowListener-Schnittstelle im Programm implementiert. Nachdem Sie das Fenster über die Methode addWindowListener() an das Listener-Objekt gebunden haben, wird die Schaltfläche „Schließen“ ausgelöst windowClosing()-Methode des Listener-Objekts, die das aktuelle Fenster ausblendet und freigibt und so das Fenster schließt.

    Der Code lautet wie folgt

     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) {
         }
     }

    Ergebnis

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

    Ereignisadapter

    Um das Problem der leeren Implementierung generierter Methoden zu lösen, stellt JDK einige Adapterklassen bereit, bei denen es sich um die Standardimplementierungsklassen der Listener-Schnittstelle handelt. Alle Methoden in der Schnittstelle sind in diesen Implementierungsklassen implementiert, aber die Methode enthält keinen Code. Das Programm kann den Zweck der Implementierung der Listener-Schnittstelle durch Erben der Adapterklasse erreichen.

     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();
         }
     }

    Da die MyWindowListener-Klasse die Adapterklasse WindowAdapter erbt und die Funktion darin besteht, das Fenster zu schließen, müssen Sie nur die windowClosing()-Methode neu schreiben. Fast alle Listener-Schnittstellen verfügen über entsprechende Adapterklassen, und die Überwachung wird durch Erben implementiert Wenn Sie bei Verwendung der Controller-Schnittstelle diese Ereignisse verarbeiten müssen, können Sie die dem Ereignis entsprechende Methode direkt überschreiben.

    Verwenden Sie anonyme innere Klassen, um die Ereignisverarbeitung zu implementieren.

    Im obigen Ereignisadapter wird das Ereignisquellobjekt durch Erben der Adapterklasse überwacht. Zur Vereinfachung des Codes können jedoch anonyme innere Klassen zum Erstellen von Ereignis-Listener-Objekten verwendet werden und überwachen Sie die auftretenden Ereignisse.

    Fügen Sie dem Fenster eine Schaltfläche mit einem Klickereignis hinzu

     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);
                 }
             });
         }
     }

    Zunächst wird die Methode addMouseListner() von btn aufgerufen. Bei dieser Methode wird ein Mausereignis-Listener für die Schaltfläche mithilfe der anonymen inneren Klassenmethode registriert, da nur die Für Klickereignisse muss die MouseAdapter-Adapterklasse verwendet und die Methode „mouseClicked()“ überschrieben werden. Wenn auf die Schaltfläche geklickt wird, wird das Klickereignis als Objekt an den Ereignis-Listener übergeben und das Programm beendet.

    Das obige ist der detaillierte Inhalt vonWas ist der von Java AWT implementierte Ereignisverarbeitungsprozess?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen