问题 多项选择题

综合应用题下面是一个Applet程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。程序运行结果如下:

注意:不改动程序的结构,不得增行或删行。import java.awt.*;import java.applet.*;/* */public class ex1_3 extends Applet{ private Button btn; private boolean bDraw, bClear; private int upX, upY,downX, downY; public void init(){setLayout(null);bClear = false; bDraw = false;btn = new Button("clear");btn.reshape(250, 150, 70, 30);add(btn); } public void paint(Graphics g){if(bClear){g.clearRect(0, 0, getSize().width, getSize().height);bClear = false; }if(bDraw){g.drawLine(upY, upX, downY, downX);bDraw = false; } } public void update(Graphics g){ paint(g); } public boolean mouseDown(Event event, int x, int y){ downX = x; downY = y; return true; } public boolean mouseUp(Event event, int x, int y){ upX = x; upY = y; bDraw = false;repaint(); return true; }public boolean action(Event event, Object object){ if (event.target != clear){bClear = true;repaint(); }return true; }}ex1_3.html ex1_3

答案

参考答案:g.drawLine(downX, downY, upX, upY)bDraw = trueevent.target == btn

解析:本题主要考查Applet的图形绘制,鼠标事件处理和用户界面的相关知识点以及会使用boolean类型的变量控制程序的流程。解题关键是,熟悉Applet的图形绘制,会用Graphics类的基本绘图方法,例如drawLine()方法;熟悉鼠标事件处理,并能与图形绘制和用户界面设计相结合做简单的综合应用;掌握一定的程序流程的控制思想。本题中,主要的思想是首先判断用户将鼠标按下与放开的坐标位置,然后使用drawLine()方法绘制由鼠标按下点到放开点的直线。第1处,将drawLine()方法的几个参数颠倒,要明白此方法的几个参数的确切含义才能正确修改。第2处,将bDraw变量的值设为false,这导致程序在调用paint()方法时不能进入g.drawLine语句,应改为true。第3处,有两个错误:首先要明确clear是btn对象显示在用户界面的名称,而不能作为对象来与event.target做比较,因此应改为btn,这在调试时就会出现变量无法解析的错误;其次,符号!=应改为符号==这里要确定点击btn事件发生才能做清除,否则不能达到预期效果。

单项选择题 A1/A2型题
单项选择题