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

admin2009-01-15  31

问题 下面是一个Applet程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
   注意:不改动程序的结构,不得增行或删行。
   程序运行结果如下:
  
   import java.awt.*;
   import java.applet.*;
   <applet code=ex1_3.class width=800 height=400>
  </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
   <HTML>
   <HEAD>
   <TITLE>ex1_3</TITLE>
   </HEAD>
   <BODY>
   <applet  code="  ex1_3.class"  width=800  height=400 >
   </applet>
   </BODY>
   </HTML>

选项

答案g.drawLine(downX,downY,upX,upY) bDraw = true event.target == btn

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

最新回复(0)