问题 问答题

下面是一个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事件发生才能做清除,否则不能达到预期效果。

单项选择题
判断题