java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > 监听器ActionListener与MouseListener执行顺序

Java监听器ActionListener与MouseListener的执行顺序说明

作者:Starzkg

这篇文章主要介绍了Java监听器ActionListener与MouseListener的执行顺序说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

基本概念

开发环境

源代码

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

运行结果

小结一下

ActionListener先于MouseListener执行

注:某教学视频中在JAVA 1.6环境下ActionListener后于MouseListener执行。

鼠标监听器和动作监听器区别和联系

1.英文名:MouseListener和ActionListener

2.作用

3.区别

究竟按下或者释放的是哪个按钮,所以按钮多的话,不能用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);
			 }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文