有沒(méi)有想過(guò)這樣的一些問(wèn)題?為什么點(diǎn)擊界面,會(huì)有相應(yīng)的反應(yīng)?輸入指定內(nèi)容,會(huì)出現(xiàn)相對(duì)應(yīng)的內(nèi)容?本文將通過(guò) Java 來(lái)講解 Java 中的事件監(jiān)聽(tīng)機(jī)制來(lái)解答這些問(wèn)題,以下是詳情內(nèi)容。
事件監(jiān)聽(tīng)機(jī)制的定義
Java事件監(jiān)聽(tīng)機(jī)制在圖形界面編程的時(shí)候應(yīng)用的比較多。我們會(huì)時(shí)常對(duì)界面進(jìn)行一系列的操作,比如在輸入框輸入內(nèi)容、點(diǎn)擊登錄注冊(cè)按鈕等等,著一些操作都被稱之為事件。當(dāng)進(jìn)行這些操作的時(shí)候,程序就會(huì)采取相應(yīng)的措施來(lái)相應(yīng)這些事件。
1.事件源對(duì)象
(1)什么內(nèi)容可以成為事件源對(duì)象?
只有容器組件和元素組件可以成為事件源對(duì)象。
(2)怎么確定界面上誰(shuí)是事件源對(duì)象?
當(dāng)你的動(dòng)作發(fā)生在哪一個(gè)組件上,那么這個(gè)組件就是事件源對(duì)象。
2、事件監(jiān)聽(tīng)方法
(1)事件監(jiān)聽(tīng)方法由事件源對(duì)象提供。
(2)事件監(jiān)聽(tīng)方法捕獲事件源對(duì)象上面的動(dòng)作。如果有動(dòng)作發(fā)生,則方法捕獲動(dòng)作,收集源對(duì)象的信息和動(dòng)作信息,然后把這些信息交給事件接口的對(duì)象進(jìn)行處理。
3、事件接口(處理類)
事件接口對(duì)象拿到事件監(jiān)聽(tīng)方法提供的信息后,會(huì)根據(jù)這些信息,去調(diào)用相應(yīng)的事件處理方法。
接下來(lái)我們通過(guò)一個(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)聽(tīng)方法,并指定事件處理類對(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)聽(tīng)方法類 并傳入?yún)?shù)
DrawLis drawlis=new DrawLis(graphics);
//使按鈕button調(diào)用監(jiān)聽(tīng)方法
button.addActionListener(drawlis);
}
public static void main(String[] args)
{
//實(shí)例化Draw類并調(diào)用入口函數(shù)
Draw draw=new Draw();
draw.initUI();
}
}
//定義事件監(jiān)聽(tīng)方法的類
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)聽(tīng)接口
public class DrawLis implements ActionListener
{
private Graphics g;
//構(gòu)造方法用于傳參
public DrawLis(Graphics g)
{
this.g=g;
}
//定義監(jiān)聽(tīng)方法,畫一個(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è)黑色的球。
總結(jié)
以上就是Java中的事件監(jiān)聽(tīng)機(jī)制簡(jiǎn)要概述的全部?jī)?nèi)容,想要了解更多關(guān)于Java的知識(shí)內(nèi)容,請(qǐng)關(guān)注W3Cschool以往的文章或者繼續(xù)瀏覽接下來(lái)的內(nèi)容,請(qǐng)多多關(guān)注和支持我們。