实现语义事件监听器的一个显然的候选者就是在Skctcher程序中的SketchFrame类中支持菜单栏操作。当我们在其中的个下拉式菜单中点击一个菜单项时,就会产生我们可以监听到的语义事件,然后用它确定相应的程序行为。
在构造图元对象时,我们使旧elementTyPe和e1ementColor成员设置每个菜单项的状态。只有对应elementType中默认类型的那个图元类型菜单项设置为复选,这是因为传递给JRadioButtonMenultem构造函数的自变虽比较后只产生一个True.颜色菜单项所使用的方法与之相同,但是要注意为了有效的比较,我们使用在Color类中定义的equals()方法。由于我们只使用在这个类中定义的Color常量值,所以可不必使用==,但是一旦使用的颜色不在这其中,就将不再操作。当然,对于图元类型项必须使用==,这是因为ID是int类型的。
进行整理后,我们可以为Elements菜单实现监听器了,让我们从类型菜单项开始。
我们将增加一个内置类,它将为指定图元类型的菜单项定义监听器。这个类将实现ActionListener接口,这是因为我们希望响应这些菜单项的操作行为。把下列定义作为内置类添加到SketchFrame中:
//Handles element type menu items
class TypeListener implements AcLionLisener
{
//Constructor
TypeListener(int type)
{
this.type=type;
}
//sets the element type
public void actionPerformed(ActionEven:0)
(elementType=type; )
private int type; //Store the type for the menu
}
现在我们可以使用这个类的对象作为菜单项的监听器。把下列代码添加到SketchFrame构造函数中的建立Elements菜单的类型菜单项代码之后:
//Add type menu item listeners
lineItem.addActionListener(new TypeListener(LINE));
rectangleItem.addActionListener(new TypeListener(RECTANGLE));
circleItem.addActionListener(new TypeListener(RIRCLE)
curveItem.addActionListener(new TypeListener(CURVE));
为了把java.awt.event包加到SketcherFrarme类中,还需要增加一条import语句币新编译Sketcher
,看看它是如何操作的。
如何工作
与SketchFrame对象中设置当前图元类型没有什么不同。监听器类极其的简单。每个监听器对象存储与菜单项对应的类型,它是由自变量传递给构造函数的,当发生事件时。actionPerformed()方法存储SketchFrarme对象的。eletmentType成员中监听对象的类型。
考无忧小编推荐:
更多计算机等级考试真题及答案>>>点击查看
想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>
本文网址:http://www.k51.com.cn/info/jsjdjks/1802/0126022.html