下面是一个Applet程序,其功能是在窗口中绘制3个半径递增的圆,并用RGB三原色对这3个圆填充。要求建立一个绘制圆的类,实现根据指定颜色进行填充的功能,在主程序中通过调用这个类的方法实现圆的绘制。请改正程序中的错误(有下划线的语句),使程序能输出正确的结

admin2009-01-15  89

问题 下面是一个Applet程序,其功能是在窗口中绘制3个半径递增的圆,并用RGB三原色对这3个圆填充。要求建立一个绘制圆的类,实现根据指定颜色进行填充的功能,在主程序中通过调用这个类的方法实现圆的绘制。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
   注意:不改动程序的结构,不得增行或删行。
   程序运行结果如下:
   
   import java.applet.*;
   import java.awt.*;
   import java.awt.*;
   /*
   <applet code="ex22_3.class" width=800 height=400 >
   </applet>
   */
   class CanvasCircle extends Canvas{
    private Color cCircle;
    public CanvasCircle(Color c){
      cCircle = c;
    }
    public void paint(Graphics g){
      int dimCricle, xCircle, yCircle;
      Dimension sizeCurrent = getSize();
      if  (sizeCurrent.width > sizeCurrent.height){
         dimCricle = sizeCurrent.width;
      }
      else{
         dimCricle = sizeCurrent.height;
      }
      g.setColor(cCircle);
      xCircle =  (sizeCurrent.height - dimCricle)  / 2;
      yCircle = (sizeCurrent.width - dimCricle)  / 2;
      g.fillOval(xCircle, yCircle, dimCricle, dimCricle);
    }  
   }  
   public class ex22_3 extends Applet{
      public void init(){
         GridBagLayout gbl = new GridBagLayout();
         GridBagConstraints gbc = new GridBagConstraints();
         CanvasCircle circleNew;
         setLayout(gbl);
         gbc.weightx = 1.0;
         gbc.weighty = 1.0;
         gbc.fill = GridBagConstraints.BOTH;
         circleNew = new CanvasCircle(Color.red);
         gbl.setConstraints(circleNew, gbc);
         add(circleNew);
         gbc.weightx = 1.5;
         gbc.weighty = 1.5;
         circleNew = new CanvasCircle(Color.green);
         gbl.setConstraints(circleNew, gbc);
         add(circleNew);
         gbc.weightx = 2.0;
         gbc.weighty = 2.0;
         circleNew = new CanvasCircle(Color.blue);
         gbl.setConstraints(circleNew, gbc);
         add(circleNew);
      }
   }
   ex22_3, h tml
   <HTML>
   <HEAD>
      <TITLE>ex22_3</TITLE>
   </HEAD>
   <BODY>
   <applet code="ex22_3.class" width=800 height=400 >
   </applet>
   </BODY>
   </HTML>

选项

答案sizeCurrent.width<sizeCurrent.height xCircle= (sizeCurrent.width-dimCricle) /2 yCircle=(sizeCurrent.height-dimCricle)/2

解析 本题主要考查根据需要设计能完成绘制圆的Canvas子类的编程,以及与Applet图形绘制的基本操作相结合的综合应用。
   解题关键是CanvasCircle类的编写,颜色作为对外的接口,根据颜色参数来确定绘制圆的颜色,因此通过类的构造方法从外界获得这个参数,paint()是重载了Canvas的方法,初始化CanvasCircle对象之后,自动执行实现绘制。本题中,第1处,根据条件判断式的含义,很容易得到答案;第2处,要明白窗口getSize().width属性,对应的参数应该是xCircle,同理第3处 getSize().height属性对应的参数是yCircle。
转载请注明原文地址:https://kaotiyun.com/show/z1np777K
0

最新回复(0)