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.
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
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!