Java awt绘制鼠标轨迹的方法

Java awt绘制鼠标轨迹的方法

java的作业中让用awt完成记录鼠标轨迹,看了老师ppt中的方法,学了学,确实能够完成鼠标轨迹的绘制,而且看着比较的简单。所以算是emm做一个分享哈,本人小白白~

int x;
int y;

创建变量x,y

public void mousePressed(MouseEvent e) {
				x = e.getX();
				y = e.getY();
			}

用x和y分别保存当前鼠标按压事件的坐标
这个事件监听在addMouseListener中,完整的如下
代码中的p是我用来当画板的p面板,代码的事件监听会在鼠标在面板上按下就一直持续被触发

p.addMouseListener(new MouseListener() {
					
					@Override
					public void mouseReleased(MouseEvent e) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void mousePressed(MouseEvent e) {
						x = e.getX();
						y = e.getY();
					}
					
					@Override
					public void mouseExited(MouseEvent e) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void mouseEntered(MouseEvent e) {
						// TODO Auto-generated method stub
						
					}
					
					@Override
					public void mouseClicked(MouseEvent e) {
						// TODO Auto-generated method stub
						
					}
				})
				});

之后还需要添加鼠标拖拽的事件监听

public void mouseDragged(MouseEvent e) {
						Graphics2D g = (Graphics2D) p.getGraphics();
						int x2 = e.getX();
						int y2 = e.getY()//分别获取当前的x和y坐标;
						g.draw(new Line2D.Double(x, y, x2, y2));//绘制两点间直线
						x = x2;//将x更新
						y = y2;//将y更新
						g.dispose();//可省略
					}

该事件监听在addMouseMotionListener中
代码中的p是我用来当画板的p面板,代码的事件监听会在鼠标在面板上拖拽时一直持续被触发

p.addMouseMotionListener(new MouseMotionListener() {
					public void mouseMoved(MouseEvent e) {
						// TODO Auto-generated method stub
						
					}
					public void mouseDragged(MouseEvent e) {
						Graphics2D g = (Graphics2D) p.getGraphics();//强制转换成graphic2D
						int x2 = e.getX();
						int y2 = e.getY()//分别获取当前的x和y坐标;
						g.draw(new Line2D.Double(x, y, x2, y2));//绘制两点间直线
						x = x2;//将x更新
						y = y2;//将y更新
						g.dispose();//可省略
					}
				});

这样确实能实现绘制鼠标轨迹,但原理嘛……我还不甚清楚嗯:尝试一下或许是,按压事件和拖拽事件在按压拖拽过程中交替被触发,交替更新坐标让电脑能完整绘制鼠标轨迹(想不清楚的我的某种模糊的想法~)

叙述过程中有什么不严谨,我承认ha嗯,代码新手,java入手几个月吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值