JAVA的MouseListener监听器



------------------------------------------------------原帖链接-------------------------------------------------------



--------------------------------------------------------上一篇链接--------------------------------------------------





【一】 KeyListener

(1)鼠标监听事件基本用法

书写格式


MouseListener mouse = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
//鼠标按下后释放触发
}
@Override
public void mousePressed(MouseEvent e) {
//鼠标按下时触发
}
@Override
public void mouseExited(MouseEvent e) {
//鼠标的光标移出到组件触发
}
@Override
public void mouseEntered(MouseEvent e) {
//鼠标的光标移动到组件触发
}
@Override
public void mouseClicked(MouseEvent e) {
//鼠标发生单机事件时触发
} };


作用
上面MouseListener接口实现了5个方法
当鼠标 <左键><中键><右键>中的其中一个按下或者释放时就会被触发




package key;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

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

public class Mouse1 {
	
	public Mouse1() {
		JFrame jframe = new JFrame();
		jframe.setSize(600, 600);				//设置窗体大小
		jframe.setLocationRelativeTo(null);		//设置居中显示
		
		JButton jbutton = new JButton("按钮");	//添加按钮		
		jbutton.addMouseListener(mouse);		//为按钮添加监听对象
		jframe.getContentPane().add(jbutton);	//获得容器,将按钮添加到容器中
		
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	MouseListener mouse = new MouseListener() {
		
		@Override
		public void mouseReleased(MouseEvent e) {
			System.out.println("鼠标释放");
			//鼠标按下后释放触发
			
		}
		
		@Override
		public void mousePressed(MouseEvent e) {
			System.out.println("鼠标按下");
			//鼠标按下时触发		
			
		}
		
		@Override
		public void mouseExited(MouseEvent e) {
			System.out.println("光标移除");
			//鼠标的光标移出到组件触发
			
		}
		
		@Override
		public void mouseEntered(MouseEvent e) {
			System.out.println("光标移动到组件");
			//鼠标的光标移动到组件触发
			
		}
		
		@Override
		public void mouseClicked(MouseEvent e) {
			System.out.println("鼠标发生过单机事件");
			//鼠标发生单机事件时触发
			
		}
	};
	
	public static void main(String[] args) {
		new Mouse1();
	}

}



GIF演示
在这里插入图片描述



(2)鼠标的 [左键] [右键] [中间] 实现

鼠标常量值表示的键位
1表示鼠标左键
2表示鼠标中键
3表示鼠标右键

获取鼠标e的方法作用
e.getButton()返回一个int值,对应的鼠标键
e.ClickCount()获取鼠连续 的单机次数
e.getX()获取鼠标的宽X位置
e.getY()获取鼠标高Y的位置
e.getSource()获取触发此组件的对象是


package key;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

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

public class Mouse2 {
	
	public Mouse2() {
		JFrame jframe = new JFrame();
		jframe.setSize(600, 600);				//设置窗体大小
		jframe.setLocationRelativeTo(null);		//设置居中显示
		jframe.setLayout(null);
		JButton jbutton = new JButton("按钮");	//添加按钮		
		jbutton.setBounds(100, 100, 200, 200);	//设置鼠标位置(100, 100)像素,大小为(200, 200)像素
		jbutton.addMouseListener(mouse);		//为按钮添加监听对象
		jframe.getContentPane().add(jbutton);	//获得容器,将按钮添加到容器中
		
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	MouseListener mouse = new MouseListener() {
		
		@Override
		public void mouseReleased(MouseEvent e) {
			//鼠标按下后释放触发
			
		}
		
		@Override
		public void mousePressed(MouseEvent e) {
			//鼠标按下时触发
				switch(e.getButton()) {
				//e.getButton()返回数字1, 2, 3,分别表示鼠标左键, 鼠标中键, 鼠标右键
				case 1: System.out.print("<鼠标左键触发>");
						System.out.print("<鼠标的坐标:"+" (" + e.getX() + "," + e.getY() + ") >");
						System.out.print("<鼠标连续点击次数:" + e.getClickCount() + ">\n");
						break;
				case 2: System.out.print("<鼠标中键触发>");
						System.out.print("<鼠标的坐标:"+" (" + e.getX() + "," + e.getY() + ") >");
						System.out.print("<鼠标连续点击次数:" + e.getClickCount() + ">\n");
						break;
				case 3: System.out.print("<鼠标右键触发>");
						System.out.print("<鼠标的坐标:"+" (" + e.getX() + "," + e.getY() + ") >");
						System.out.print("<鼠标连续点击次数:" + e.getClickCount() + ">\n");
						break;
				default:break;				
				}

			
		}
		
		@Override
		public void mouseExited(MouseEvent e) {
			//鼠标的光标移出到组件触发
			
		}
		
		@Override
		public void mouseEntered(MouseEvent e) {
			//鼠标的光标移动到组件触发
			
		}
		
		@Override
		public void mouseClicked(MouseEvent e) {
			//鼠标发生单机事件时触发
	
		}
	};
	
	public static void main(String[] args) {
		new Mouse2();
	}

}



上面代码在mousePressed中写入方法
下面是Gif执行效果



在这里插入图片描述

上面单击点击和连续点击返回的值是不同的



【二】项目实例

< 做我女朋友好吗小程序?>

< 配置图片>

在这里插入图片描述

下面是代码示例

package key;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;


public class Mouse3 {
		ImageIcon image = new ImageIcon("src/ax.jpg");
	public Mouse3() {
		JFrame jframe = new JFrame();
		jframe.setSize(image.getIconWidth(), image.getIconHeight());
		jframe.setLocationRelativeTo(null);		//窗口剧中
		jframe.setResizable(false);				//设置窗口不可调整
		
		
		
//-----------------------------------------------------------------				
		jframe.addWindowListener(new WindowListener() {//窗口监听事件
			
			@Override
			public void windowOpened(WindowEvent e) {
				
				
			}
			
			@Override
			public void windowIconified(WindowEvent e) {
				
				
			}
			
			@Override
			public void windowDeiconified(WindowEvent e) {

				
			}
			
			@Override
			public void windowDeactivated(WindowEvent e) {

				
			}
			
			@Override
			public void windowClosing(WindowEvent e) {
				//点击窗口右上角的'x'图标时关闭时触发

				JOptionPane.showMessageDialog(null,"不做我女朋友别想退出来?");
				//窗口关闭时弹出
	
			}
			
			@Override
			public void windowClosed(WindowEvent e) {
				
				
			}
			
			@Override
			public void windowActivated(WindowEvent e) {
				
				
			}
		});

//-----------------------------------------------------------------				
		JLabel jlabel = new JLabel();			//创建标签
		jlabel.setIcon(image);					//添加图片
		jlabel.setLayout(null);					//设置标签布局
		
		JButton jbutton1 = new JButton("不愿意");	//创建按钮
		jbutton1.setSize(100, 60);				//设置按钮大小
		jbutton1.setContentAreaFilled(false);	//按钮设置为透明
		jbutton1.setLocation(300, 50);			//按钮位置
		
		JButton jbutton2 = new JButton("愿意");
		jbutton2.setSize(100, 60);
		jbutton2.setContentAreaFilled(false);
		jbutton2.setLocation(430, 50);
	
		jlabel.add(jbutton1);				//按钮加入到标签组
		jlabel.add(jbutton2);
		
		Random random = new Random();		//随机类
//-----------------------------------------------------------------				
		jlabel.addMouseListener(new MouseListener() {//鼠标监听事件
			
			@Override
			public void mouseReleased(MouseEvent arg0) {
				
				
			}
			
			@Override
			public void mousePressed(MouseEvent arg0) {
				
				
			}
			
			@Override
			public void mouseExited(MouseEvent arg0) {
				jbutton1.setLocation(random.nextInt(500), random.nextInt(460));
				//通过获取随机数来重新设置按钮位置	
			}
			
			@Override
			public void mouseEntered(MouseEvent arg0) {
				
				
			}
			
			@Override
			public void mouseClicked(MouseEvent arg0) {
				
				
			}
		});
		
//-----------------------------------------------------------------		
		jbutton2.addActionListener(new ActionListener() {
		//为按钮添加AcctionListener监听事件	
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);//但选择按钮为"愿意",退出程序
				
			}
		});
		
//-----------------------------------------------------------------				
		jframe.getContentPane().add(jlabel);//标签加入到容器中
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		//关闭方式JFrame.DO_NOTHING_ON_CLOSE
	}
	
	
	
	public static void main(String[] args) {
		new Mouse3();
	}
	

}

GIF演示

在这里插入图片描述

【3】下一篇

--------------------------------------------------KeyListener--------------------------------------------------------

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值