>  기사  >  Java  >  Java AWT로 구현된 이벤트 처리 프로세스는 무엇입니까?

Java AWT로 구현된 이벤트 처리 프로세스는 무엇입니까?

王林
王林앞으로
2023-05-04 17:52:161372검색

    AWT 이벤트 처리

    이벤트 처리는 주로 사용자 작업에 응답하기 위한 것입니다

    • 이벤트 객체(이벤트): GUI 구성 요소에서 발생하는 특정 이벤트(일반적으로 사용자의 작업)를 캡슐화합니다.

    • 이벤트 소스(컴포넌트): 이벤트가 발생하는 장소, 일반적으로 이벤트를 발생시키는 컴포넌트

    • 리스너(리스너): 이벤트 소스에서 발생하는 이벤트를 모니터링하고 이에 따라 다양한 이벤트를 처리하는 역할을 담당하는 객체( 객체에는 이벤트 핸들러가 포함되어 있습니다).

    • 이벤트 핸들러: 리스너 객체는 수신된 이벤트 객체를 그에 따라 처리합니다.

    AWT의 이벤트 상속 다이어그램

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

    프로그램에서 WindowListener 인터페이스를 구현하는 이벤트 리스너 클래스 MyWindowListener를 생성합니다. addWindowListener() 메서드를 통해 창을 리스너 객체에 바인딩한 후 닫기 버튼을 클릭하면 리스너 객체의 windowClosing() 메서드를 사용하여 현재 창을 숨기고 해제하여 창을 닫습니다.

    코드는 다음과 같습니다

     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

    생성된 메소드의 빈 구현 문제를 해결하기 위해 jdk는 리스너 인터페이스의 기본 구현 클래스인 일부 어댑터 클래스를 제공합니다. 모든 메소드는 인터페이스에 있지만 메소드에 코드가 없으면 프로그램은 어댑터 클래스를 상속하여 리스너 인터페이스 구현 목적을 달성할 수 있습니다.

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

    MyWindowListener 클래스는 WindowAdapter 어댑터 클래스를 상속하고, 윈도우를 닫는 함수이므로 windowClosing() 메서드만 다시 작성하면 됩니다. 거의 모든 리스너 인터페이스에는 해당 어댑터 클래스가 있으며, 모니터링은 이를 상속받아 구현됩니다. 어댑터 클래스. 컨트롤러 인터페이스를 사용할 때 해당 이벤트를 처리해야 하는 경우 해당 이벤트에 해당하는 메서드를 직접 재정의할 수 있습니다.

    익명 내부 클래스를 사용하여 이벤트 처리 구현

    위의 이벤트 어댑터에서는 어댑터 클래스를 상속하여 이벤트 소스 객체를 모니터링합니다. 그러나 코드의 단순성을 위해 익명 내부 클래스를 사용하여 이벤트 리스너 객체를 생성할 수 있습니다. 발생하는 이벤트를 모니터링합니다.

    클릭 이벤트가 포함된 버튼을 창에 추가

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

    먼저 btn의 addMouseListner() 메서드가 호출됩니다. 이 메서드에서는 익명 내부 클래스 메서드를 사용하여 버튼에 대해 마우스 이벤트 리스너가 등록됩니다. 버튼을 모니터링해야 합니다. 클릭 이벤트의 경우 MouseAdapter 어댑터 클래스가 사용되고 mouseClicked() 메서드가 재정의됩니다. 버튼을 클릭하면 클릭 이벤트가 객체로 이벤트 리스너에 전달되고 프로그램이 종료됩니다.

    위 내용은 Java AWT로 구현된 이벤트 처리 프로세스는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제