1、练习 32 拖拽和移动鼠标 本例知识点 一句话讲解 使用 Point 类 记录当前光标位置新学 知识 使用 Graphics 类 显示屏幕 使用 int 类型 记录鼠标点击次数已学 知识 使用 Event 类 处理鼠标事件 一、练习具体要求 本练习制作拖拽和移动鼠标的程序,运行效果如图 32-1 所示。执行本练习实例后,将 创建一个面板,当用户拖动鼠标时,能够在屏幕上画直线,并且面板左上方可以显示点击 鼠标的坐标位置。本实例的知识点有:Point 类,mouseDown 类,mouseUp 类的应用。 二、程序及注释 (1)编程思路:本例因为要实现拖拽和移动鼠标的程序,所以首先要用 Point
2、 类定义 一个数组 PointMaxMarks,用来存放点击鼠标时光标所在位置的坐标。然后,因为要实 现拖拽和移动鼠标的测试程序,所以要相应鼠标事件。函数 public boolean mouseDown(Event evt,int x,int y)响应按下鼠标按键事件;函数 public boolean mouseUp(Event evt,int x,int y)响应松开鼠标按键事件。在上述 public boolean mouseDown(Event evt,int x,int y)函数的内部,通过 StartPoint=new Point(x,y)语句 生成新的 Point 类的对象,然
3、后通过 repaint()函数刷新屏幕;在上述 public boolean mouseUp(Event evt,int x,int y)函数内部,通过语句 hSum +=1 来统计鼠标点击的次数, 最后通过 repaint()函数刷新屏幕。最后,因为要同时显示鼠标的坐标位置,所以在显示 屏幕内容的函数中进行处理。这是在函数 public void paint(Graphics g)中实现的。 (2) 程序实现及注释: /Mousetest2.java /主要功能是当移动鼠标时,显示鼠标的坐标位置, /当拖拽鼠标时,画一个直线。 import java.awt.Graphics; import
4、 java.awt.Point; import java.awt.Event; import java.applet.Applet; import java.awt.Color; public class Mousetest2 extends Applet final int MaxMarks=40; int CurMarks=0; Point MarkStarts=new PointMaxMarks; Point MarkEnds=new PointMaxMarks; Point StartPoint,CurPoint; String CurMessage=“; /按下鼠标按键时调用的方法。
5、 public boolean mouseDown(Event evt,int x,int y) if(CurMarksMaxMarks) StartPoint=new Point(x,y); return true; /松开鼠标按键时调用的方法。 public boolean mouseUp(Event evt,int x,int y) if(CurMarksMaxMarks) MarkStartsCurMarks=StartPoint; MarkEndsCurMarks=CurPoint; CurMarks+; StartPoint=null; CurPoint=null; repaint
6、(); return true; /当拖拽鼠标时调用的方法。 public boolean mouseDrag(Event evt,int x,int y) if(CurMarksMaxMarks) CurPoint=new Point(x,y); repaint(); return true; /当移动鼠标时调用的方法。 public boolean mouseMove(Event evt,int x,int y) CurMessage=“鼠标的坐标位置为(“+x+“,“+y+“ )“; repaint(); return true; public void paint(Graphics g
7、) int x1,y1,x2,y2; g.drawString(CurMessage,10,10); for(int i=0;iCurMarks;i+) x1=MarkStartsi.x; y1=MarkStartsi.y; x2=MarkEndsi.x; y2=MarkEndsi.y; g.setColor(Color.blue); g.drawLine(x1,y1,x2,y2); if(StartPoint!=null) x1=StartPoint.x; y1=StartPoint.y; x2=CurPoint.x; y2=CurPoint.y; g.setColor(Color.blue
8、); g.drawLine(x1,y1,x2,y2); 三、练习效果(如图 32-1 所示) 本实例代码编写完毕,分别存盘为:C: j2sdk1.4.0javaprograms Mousetest2.java 和 Mousetest1.java。打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到 javaprograms 目录,输入 javac Mousetest2.java 来编译程序,最后将程序加载到网页上。 在 javaprograms 文件夹下新建一个记事本文件,内容为 拖拽和移动鼠标的测试程序 ,然后保存为 Mousetest2.html 的网页文件。 本例制作完毕,用浏览器打开 Mousetest2.html 文件便可以看到制作效果。 图 32-1 练习效果 四、总结提高 通过制作拖拽和移动鼠标的实例,运用了 Java2 中的界面技术和消息响应技术。通过 界面技术,制作出直线效果和鼠标的坐标位置。通过消息响应技术,可以响应用户对鼠标 的操作,实现人机交互。