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入手几个月吧~