App下載

簡(jiǎn)述Java中的事件監(jiān)聽機(jī)制

猿友 2021-07-16 15:59:56 瀏覽數(shù) (3139)
反饋

有沒有想過這樣的一些問題?為什么點(diǎn)擊界面,會(huì)有相應(yīng)的反應(yīng)?輸入指定內(nèi)容,會(huì)出現(xiàn)相對(duì)應(yīng)的內(nèi)容?本文將通過 Java 來講解 Java 中的事件監(jiān)聽機(jī)制來解答這些問題,以下是詳情內(nèi)容。

事件監(jiān)聽機(jī)制的定義

Java事件監(jiān)聽機(jī)制在圖形界面編程的時(shí)候應(yīng)用的比較多。我們會(huì)時(shí)常對(duì)界面進(jìn)行一系列的操作,比如在輸入框輸入內(nèi)容、點(diǎn)擊登錄注冊(cè)按鈕等等,著一些操作都被稱之為事件。當(dāng)進(jìn)行這些操作的時(shí)候,程序就會(huì)采取相應(yīng)的措施來相應(yīng)這些事件。

1.事件源對(duì)象

    (1)什么內(nèi)容可以成為事件源對(duì)象?

    只有容器組件和元素組件可以成為事件源對(duì)象。

    (2)怎么確定界面上誰是事件源對(duì)象?

    當(dāng)你的動(dòng)作發(fā)生在哪一個(gè)組件上,那么這個(gè)組件就是事件源對(duì)象。

2、事件監(jiān)聽方法

    (1)事件監(jiān)聽方法由事件源對(duì)象提供。

    (2)事件監(jiān)聽方法捕獲事件源對(duì)象上面的動(dòng)作。如果有動(dòng)作發(fā)生,則方法捕獲動(dòng)作,收集源對(duì)象的信息和動(dòng)作信息,然后把這些信息交給事件接口的對(duì)象進(jìn)行處理。

3、事件接口(處理類)

    事件接口對(duì)象拿到事件監(jiān)聽方法提供的信息后,會(huì)根據(jù)這些信息,去調(diào)用相應(yīng)的事件處理方法。


接下來我們通過一個(gè)簡(jiǎn)單的實(shí)例代碼感受一下:

思路

    1、構(gòu)建一個(gè)窗體,再裝上一個(gè)?start?按鈕。

    2、定義?LoginListener?事件處理類。這個(gè)類繼承了?ActionListener?動(dòng)作事件接口,需要重寫接口里面的抽象方法。

    3、實(shí)例化?LoginListener?事件處理對(duì)象。

    4、給事件處理類對(duì)象添加動(dòng)作監(jiān)聽方法,并指定事件處理類對(duì)象。

代碼實(shí)例:

//第一步就簡(jiǎn)單地構(gòu)造一個(gè)窗體
package Login20190318;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;

//Draw類繼承JFrame類  相當(dāng)于Draw類就是JFrame類  直接調(diào)用JFram類中的屬性和方法
public class Draw extends JFrame
{
	//入口主函數(shù)
	public void initUI()
	{
		this.setSize(1500,600);
		FlowLayout flowlayout=new FlowLayout(FlowLayout.CENTER,5,5);
		this.setLayout(flowlayout);
		JButton button=new JButton("Start");
		this.add(button);
		
		this.setVisible(true);
		
		//使窗體獲得繪圖板權(quán)限
		Graphics graphics=this.getGraphics();
		
		//實(shí)例化監(jiān)聽方法類  并傳入?yún)?shù)
		DrawLis drawlis=new DrawLis(graphics);
	
		//使按鈕button調(diào)用監(jiān)聽方法
		button.addActionListener(drawlis);
	}
	
	
	
	public static void main(String[] args) 
	{
		//實(shí)例化Draw類并調(diào)用入口函數(shù)
		Draw draw=new Draw();
		draw.initUI();
		
	}

}
//定義事件監(jiān)聽方法的類
package Login20190318;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import java.awt.Graphics;

//實(shí)現(xiàn)監(jiān)聽接口
public class DrawLis implements ActionListener
{

	private Graphics g;
	
	//構(gòu)造方法用于傳參
	public DrawLis(Graphics g)
	{
		this.g=g;
	}
	
	//定義監(jiān)聽方法,畫一個(gè)橢圓
	public void actionPerformed(ActionEvent e)
	{
		Random random = new Random();
		int x=random.nextInt(1600);
		int y=random.nextInt(1600);
		g.fillOval(x,y,60,70);
	}
	
}

初始面板

初始面板

點(diǎn)擊事件后,面板上出現(xiàn)一個(gè)黑色的球。

點(diǎn)擊事件后


總結(jié)

以上就是Java中的事件監(jiān)聽機(jī)制簡(jiǎn)要概述的全部?jī)?nèi)容,想要了解更多關(guān)于Java的知識(shí)內(nèi)容,請(qǐng)關(guān)注W3Cschool以往的文章或者繼續(xù)瀏覽接下來的內(nèi)容,請(qǐng)多多關(guān)注和支持我們。


0 人點(diǎn)贊