Java의 이벤트 모니터링 메커니즘

Java의 이벤트 모니터링 메커니즘

1. 이벤트 모니터링 메커니즘의 정의

Java 이벤트 모니터링 메커니즘 을 이해하려면 먼저 Java에서 이벤트가 정의되는 방식을 이해해야합니다! Java로 인터페이스를 작성한 후 입력 상자에 데이터를 입력하거나 버튼 또는 메뉴를 클릭하는 등 인터페이스에서 몇 가지 작업을 수행하며 이러한 작업을 이벤트 라고 합니다 . Gu Ming이 제안한
이벤트 모니터링 메커니즘 은 이벤트 발생 여부를 모니터링하는 것으로,이를 모니터링하려면 집에서 일어나는 것과 유사하며 집에 카메라를 부착합니다. 이러한 이벤트를 처리하기 위해 Java에도 유사한 메커니즘이 있습니다. 예를 들어 버튼 클릭 여부를 모니터링해야하는 경우 버튼에 모니터와 같은 것을 설치해야합니다. 이것을 이벤트 리스너 라고 부릅니다 . 버튼 클릭 여부를 모니터링하는 메커니즘은 이벤트 모니터링 메커니즘
이며 Java에서는 모든 이벤트에 해당 이벤트 리스너가 있습니다. 이들은 모두 Java.awt.event 패키지에 정의되어 있습니다 .

둘째, 이벤트 모니터링 메커니즘의 구성

1) 일반적으로 Java.awt.eventObject를 상속받는 Event object 는 일반적으로 이벤트 유형의 역할을 결정하는 데 사용할 수 있습니다 .2) Button 버튼 및 기타 개체와 같은 GUI 및 Swing 프로그래밍에서 트리거 이벤트의 소스이벤트 소스 이벤트 소스입니다 .3) 이벤트 리스너 , 즉 이벤트 소스에서 내 보낸 이벤트를 수신하고 작업에 응답하는 객체로, 일반적으로 java.util.EventListener 인터페이스를 구현합니다.

세, 이벤트 모니터링의 일반적인 프로세스

1) 이벤트 소스가 리스너를 등록합니다.
2) 이벤트가 발생하면 이벤트 소스가 이벤트 객체를 리스너에게 보냅니다.
3) 리스너 객체가 이벤트에 응답합니다.

네, 구성 요소에 리스너 추가

이벤트 리스너의 정의는 모두 인터페이스이므로 해당 인터페이스를 구현할 클래스를 정의해야합니다. 예를 들어 버튼 클릭 여부를 모니터링하려면 다음과 같이 할 수 있습니다. 코드는 다음과 같습니다.

package com.yf1006;
import java.awt.event.ActionEvent;

//通过定义一个ButtonListener类来实现对应的接口,这样一个简单的动作事件监听器实现:监听按钮是否被点击了!
//其中java.awt.event.ActionListener是一种动作监听器,它是属于一种接口的,所以需要定义一个类来实现接口的!!
public class ButtonListener implements java.awt.event.ActionListener{
    
    
	//在这里必须要重写接口中的方法:事件发生时,这个方法被自动调用了。
		public void actionPerformed(ActionEvent e) {
    
    
			System.out.println("按钮被点击了!");
		}
	}

이런 식으로 이벤트 리스너 클래스 작성을 완료 할 수 있지만, 메인 클래스에 버튼을 추가 하려면 메인 클래스 ( 소위 메인 클래스, 즉 클래스 이름과 파일 이름이 일관되고 메인 함수 클래스 포함 ) 를 만들어야합니다. 구성 요소를 기다렸다가 리스너 객체를 만든 다음 리스너를 버튼에 추가하여 버튼의 모니터링 이벤트 메커니즘을 완전히 구현합니다. 예제 코드는 다음과 같습니다.

package com.yf1006;

//import java.awt.Dimension;

//import javax.swing.JLabel;

//import java.awt.FlowLayout;

//import javax.swing.JFrame;

public class Login_test {
    
    
	public static void main(String[] args) {
    
    
		Login_test log = new Login_test();
		log.showUI();
	}
	public void showUI() {
    
    
		//创建窗口
		javax.swing.JFrame jf = new javax.swing.JFrame();
		jf.setSize(600, 600);
		jf.setTitle("窗口");
		
		//居中显示
		jf.setLocationRelativeTo(null);
		//关闭进程
		jf.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
		
		//流式布局管理器
		java.awt.FlowLayout fl = new java.awt.FlowLayout();
		jf.setLayout(fl);
		
		//导入图片
		javax.swing.ImageIcon img = new javax.swing.ImageIcon("F:\\桌面\\1.jpg");//为啥导入照片2则没有啥用呢
		//标签(导入的图片是需要先赋给标签,通过标签的形式去给窗体上面加图片)
		javax.swing.JLabel jl = new javax.swing.JLabel(img);
		jf.add(jl);
		
		//用户名
		javax.swing.JLabel user = new javax.swing.JLabel("账户");
		jf.add(user);
		
		//文本框
		javax.swing.JTextField jtf = new javax.swing.JTextField();
		java.awt.Dimension dim = new java.awt.Dimension(400, 40);
		jtf.setPreferredSize(dim);
		jf.add(jtf);
		
		//用户名1
		javax.swing.JLabel user1 = new javax.swing.JLabel("密码");
		jf.add(user1);
		
		//文本框1
		javax.swing.JTextField jtf1 = new javax.swing.JTextField();
		java.awt.Dimension dim1 = new java.awt.Dimension(400, 40);
		jtf1.setPreferredSize(dim1);
		jf.add(jtf1);
		
		//按钮
		javax.swing.JButton jb = new javax.swing.JButton("登录");
		jf.add(jb);
		
		//利用ButtonListener类,创建监听器对象
		ButtonListener bl = new ButtonListener();
		
		//将监听器添加给按钮
		jb.addActionListener(bl);
		
		//可视化
		jf.setVisible(true);
	}
}

출력 결과 :

추천

출처blog.csdn.net/qq_39350172/article/details/109169568