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

admin2013-02-25  35

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

最新回复(0)