Rumah  >  Artikel  >  Java  >  Apakah proses pemprosesan acara yang dilaksanakan oleh Java AWT?

Apakah proses pemprosesan acara yang dilaksanakan oleh Java AWT?

王林
王林ke hadapan
2023-05-04 17:52:161418semak imbas

    Pemprosesan acara AWT

    Pemprosesan acara terutamanya untuk bertindak balas terhadap operasi pengguna

    • Objek acara (Acara ) : Merangkum peristiwa tertentu yang berlaku pada komponen GUI (biasanya operasi oleh pengguna).

    • Sumber acara (komponen): Tempat peristiwa berlaku, biasanya komponen yang menjana acara

    • Pendengar: Bertanggungjawab mendengar peristiwa Peristiwa yang berlaku pada sumber dan objek yang mengendalikan pelbagai peristiwa dengan sewajarnya (objek mengandungi pengendali peristiwa).

    • Pengendali acara: Objek pendengar mengendalikan objek acara yang diterima dengan sewajarnya.

    Rajah warisan peristiwa dalam AWT

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

    Kelas pendengar acara MyWindowListener yang melaksanakan antara muka WindowListener dicipta dalam program mengikat tetingkap kepada objek pendengar melalui kaedah addWindowListener(), mengklik butang tutup akan mencetuskan kaedah windowClosing() objek pendengar, menyembunyikan dan melepaskan tetingkap semasa, sekali gus menutup tetingkap.

    Kod adalah seperti berikut

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

    Hasil

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

    Event Adapter

    Untuk menyelesaikan masalah kosong pelaksanaan kaedah yang dijana, jdk Beberapa kelas penyesuai disediakan, yang merupakan kelas pelaksanaan lalai antara muka pendengar ini melaksanakan semua kaedah dalam antara muka, tetapi tidak ada kod dalam kaedah ini melaksanakan antara muka pendengar dengan mewarisi kelas penyesuai.

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

    Memandangkan kelas MyWindowListener mewarisi kelas penyesuai WindowAdapter, dan kerana fungsinya adalah untuk menutup tetingkap, anda hanya perlu menulis semula kaedah windowClosing() Hampir semua antara muka pendengar mempunyai kelas penyesuai yang sepadan penyesuai Apabila kelas melaksanakan antara muka pendengar dan perlu mengendalikan peristiwa tersebut, teruskan mengatasi kaedah yang sepadan dengan acara tersebut.

    Gunakan kelas dalam tanpa nama untuk melaksanakan pemprosesan acara

    Dalam penyesuai acara di atas, objek sumber acara dipantau dengan mewarisi kelas penyesuai, tetapi untuk kesederhanaan kod, kelas dalam tanpa nama boleh digunakan untuk mencipta peristiwa Objek pendengar mengendalikan peristiwa yang berlaku.

    Tambah butang dengan acara klik pada tetingkap

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

    Pertama, kaedah addMouseListner() btn telah dipanggil Dalam kaedah ini, pendengar acara tetikus telah didaftarkan untuk butang menggunakan kaedah kelas dalaman tanpa nama Kerana kita hanya perlu memantau acara klik butang, kami menggunakan kelas penyesuai MouseAdapter dan menulis semula kaedah mouseClicked() Apabila butang diklik, acara klik akan dihantar kepada pendengar acara membantah untuk keluar dari program.

    Atas ialah kandungan terperinci Apakah proses pemprosesan acara yang dilaksanakan oleh Java AWT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam