下面是一个Applet程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。 程序运行结果如图5所示。
import java.awt.*; import java.applet.*; /* <applet code=ex6_7. class width=800 height=400> </applet> */ public class ex6_7 extends Applet{ private Button btn; private boolean bDraw,bClear; private int upX,upY,downX,downY; public void int(){ 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); (1) ; } if(bDraw){ g.drawLine( (2) ); bDraw=false; } } public void update (Graphics g){ (3) ; } 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; (4) ; repaint(); return true; } public boolean action(Event event,Object object){ if( (5) ){ bClear=true; repaint(); } return true; } } ex6_7. html <HTML> <HEAD> <TITLE>ex6_7</TITLE> </HEAD> <BODY> <appletcode=" ex6_7. class" width=800 height=400 > </applet> </BODY> </HTML>
参考答案:
解析:(1)bClear=false (2)downX,downY,upX,upY(3)paint(g) (4)bDraw=true (5)event.target==btn 本题主要考查Applet的图形绘制,鼠标事件处理和用户界面的相关知识点以及会使用boolean类型的变量控制程序的流程。解题关键是,熟悉Applet的图形绘制,会用Graphics类的基本绘图方法,例如drawLine()方法;熟悉鼠标事件处理,并能与图形绘制和用户界面设计相结合做简单的综合应用;掌握一定的程序流程的控制思想。本题中,主要的思想是首先判断用户将鼠标按下与放开的坐标位置,然后使用drawLine()方法绘制由鼠标按下点到放开点的直线。注意不要将 drawLine()方法的几个参数颠倒,要明白此方法的几个参数的确切含义。将bDraw变量的值设为false,这导致程序在调用paint()方法时不能进入g.drawLine语句,应改为true。最后要明确clear是btn对象显示在用户界面的名称,而不能作为对象来与event.target做比较,因此应改为btn,这在调试时就会出现变量无法解析的错误;符号==这里要确定点击btn事件发生才能做清除,否则不能达到预期效果。