点击查看:2015计算机等级考试二级Java入门教程章节汇总
点击查看:2015计算机等级考试二级Java入门教程第十四章汇总
14.7 使用鼠标绘图
下面我们己经使用程序的内部数据绘制了几何图形。接下来我们耍用Sketcher程序在视图中用鼠标绘制一个几何图形,然后在模式中存储绘制完成的几何图形。我们希望这个过程尽可能地自然,因此将实现一种技术,它允许你通过按动鼠标左键(更准确地说是按键1)进行绘制。拖动光标绘制选定的几何图形类型,比如绘制一条直线,按下鼠标按键的点将是直线的起始点,释放按键的点将是直线的终止点。
当你按下鼠标并拖动它时,将显示一条直线。因此在拖动鼠标并且左键保持按下的整个时间内将动态地显示直线。这个过程称为橡皮筋式画线法。
我们可以使用这种方认绘制我们需要的4种几何图形。每种几何图形都由两个点定义。即鼠标按键被按下时的光标位置和鼠标按键彼释放时的光标位置(当然,还有几何图形的颜色).这就意味着,几何图形的构造函数将有三个参数,两个点和颜色。让我们看看如何处理鼠标事件来完成这项操作。
处理鼠标事件
制操作都将利用鼠标来完成,为了在处理鼠标事件的方法内建立图元,必须实现这个处理操作。我们对来源于SketchView对象中的鼠标事件感兴趣,因为这是我们绘制几何图形的地方。让视图负责处理自己的事件,这其中除了与已存在的几何图形进行交互外,还包括在绘图过程中发生的事件。
交互地绘制一个几何图形,比红直线,将涉及三种不同种类的鼠标事件。下面我们总结一下它们是些什么事件,当这些事件发生时我们需要做些什么。
我们实现了建立一个图元所需要的三个方法。mousePressed()方法将光标的位置存储在MouseHandler类的Start成员中,当你按下按键并拖动鼠标时将反复调用mouseDragged方法。mouseDragged方法利用当前光标的位置和在Start中保存的位置建立一个图元,并在这个类的tempElement成员中存储对该图元的引用。当调用mouseDragged时,last成员用来存储光标位置。start和last都是Point类型,这是因为我们得到的光标位置就是这种类型,但是要记信Point是Point2D的子类,因此你总可以在必要的时候把Point引用转换成Point2D.当你释放鼠标按键时,这个过程 结束,引发调用mouseReleased()方法。
MouseHandler类型的对象是视图对象鼠标事件的监听器,因此我们应该把它放置在SketchView构造函数中。把下列代码添加到现有的代码之后:
public SketchView(Sketcher theApp)
{
this.theApp = theApp;
MouseHandler handler = new MouseHandler(); // create the mouse listener
addMouseListener(handler); // Listen for button events
addMouseMotionListener(handler); // Listen for motion events
}
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |