溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么

發(fā)布時(shí)間:2021-12-04 15:47:44 來源:億速云 閱讀:191 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么”,在日常操作中,相信很多人在Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

基本概念

  • 監(jiān)聽器(Listener):監(jiān)聽器用于監(jiān)聽web應(yīng)用中某些對象、信息的創(chuàng)建、銷毀、增加,修改,刪除等動作的發(fā)生,然后作出相應(yīng)的響應(yīng)處理。當(dāng)范圍對象的狀態(tài)發(fā)生變化的時(shí)候,服務(wù)器自動調(diào)用監(jiān)聽器對象中的方法。常用于統(tǒng)計(jì)在線人數(shù)和在線用戶,系統(tǒng)加載時(shí)進(jìn)行信息初始化,統(tǒng)計(jì)網(wǎng)站的訪問量等等。

  • ActionListener:ActionListener用于接收操作事件的偵聽器接口。對處理操作事件感興趣的類可以實(shí)現(xiàn)此接口,而使用該類創(chuàng)建的對象可使用組件的 addActionListener 方法向該組件注冊。在發(fā)生操作事件時(shí),調(diào)用該對象的 actionPerformed 方法。

  • MouseListener:處理鼠標(biāo)事件的類要么實(shí)現(xiàn)此接口(及其包含的所有方法),要么擴(kuò)展抽象類 MouseAdapter(僅重寫所需的方法)。 然后使用組件的 addMouseListener 方法將從該類所創(chuàng)建的偵聽器對象向該組件注冊。當(dāng)按下、釋放或單擊(按下并釋放)鼠標(biāo)時(shí)會生成鼠標(biāo)事件。鼠標(biāo)光標(biāo)進(jìn)入或離開組件時(shí)也會生成鼠標(biāo)事件。發(fā)生鼠標(biāo)事件時(shí),將調(diào)用該偵聽器對象中的相應(yīng)方法,并將 MouseEvent 傳遞給該方法。

  • MouseAdapter:用于接收鼠標(biāo)事件的抽象適配器類。 這個(gè)類中的方法是空的。 此類作為創(chuàng)建偵聽器對象的方便而存在。

開發(fā)環(huán)境

  • JAVA 1.8

  • Eclipse 201803

源代碼

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIDEMO { 
	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		EventQueue.invokeLater(() ->
        {
           JFrame frame = new MyFrame();
           frame.setTitle("DrawTest");
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setVisible(true);
        });
		System.out.println("Hello World");
	}
	
	public void print(Object obj) {
		System.out.println(obj);
	}	
}
 
class MyFrame extends JFrame {
	private static final int DEFAULT_WIDTH = 400;
	private static final int DEFAULT_HEIGHT = 400;
	public MyFrame() {
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
		setLocation(100,200);
		setLayout(new FlowLayout());
		JButton but=new JButton("DEMOButton");
		but.addActionListener(event-> {
			print("action");
			
		});
		but.addMouseListener(new MouseAdapter(){
			public void mouseEntered(MouseEvent e) {
				print("enter");
			}
			public void mouseExited(MouseEvent e) {
				print("exit");
			}
			public void mouseClicked(MouseEvent e) {
				print("click");
			}
			
		});
		add(but);
	}
	public void print(Object obj) {
		System.out.println(obj);
	}
	public Dimension getPreferredSize() { return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); }
}

運(yùn)行結(jié)果

Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么

Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么

小結(jié)一下

ActionListener先于MouseListener執(zhí)行

注:某教學(xué)視頻中在JAVA 1.6環(huán)境下ActionListener后于MouseListener執(zhí)行。

鼠標(biāo)監(jiān)聽器和動作監(jiān)聽器區(qū)別和聯(lián)系

Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么

1.英文名:MouseListener和ActionListener

  • 同為接口,繼承同一個(gè)父類EventListenr

  • 用時(shí)需定義類實(shí)現(xiàn)接口

2.作用

  • MouseListener:可用于鼠標(biāo)的單擊、按下、釋放、進(jìn)入、離開,可以用于界面、組件類

  • ActionListener:用于組件上面(JPanel不可以,JFrame也不可以,JLabel也不可以)

  • JButton可以,JTextField也可以

3.區(qū)別

  • MouseListener在功能上更加多樣化,在加的對象上也更有選擇性更廣泛;

  • ActionListener在功能上相對單一,只能適用于幾種簡單的組件上且都為單擊事件。

  • ActiMouseListener有e.getActionCommand()方法,而ActionListener沒有,所以不能判斷

究竟按下或者釋放的是哪個(gè)按鈕,所以按鈕多的話,不能用MouseListener。

 //MouseListener部分:
	         public void mousePressed(MouseEvent e) {
		     // TODO Auto-generated method stub
		     g.setColor(Color.blue);
		     draw(100,400,400,400,400,100,10);
		     draw(400,100,400,400,700,400,10);
		     draw(700,400,400,400,400,700,10);
		     draw(400,700,400,400,100,400,10);
	         }
			 //同樣的功能ActionListener部分:
			 if(e.getActionCommand().equals("謝賓斯基三角形")){
			 g.setColor(Color.blue);
			 draw(100,400,400,400,400,100,10);
			 draw(400,100,400,400,700,400,10);
			 draw(700,400,400,400,400,700,10);
			 draw(400,700,400,400,100,400,10);
			 }

Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么

到此,關(guān)于“Java監(jiān)聽器ActionListener與MouseListener的執(zhí)行順序是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI