下面的Applet程序,其功能为画一个正方形,大小140*140,其背景色为蓝色(其填充色为pink色,各边离Applet的边为10像素)和一个在填充的正方形中自右上到左下来回移动的小球(半径15)。请改正程序中的错误(有下划线的语句),使程序执行后,能得

admin2009-01-15  46

问题 下面的Applet程序,其功能为画一个正方形,大小140*140,其背景色为蓝色(其填充色为pink色,各边离Applet的边为10像素)和一个在填充的正方形中自右上到左下来回移动的小球(半径15)。请改正程序中的错误(有下划线的语句),使程序执行后,能得到预期的结果。
   注意:不改动程序的结构,不得增行或删行。程序的执行结果为:
       
   import java.awt.*;
   import java.applet.*;
   /*
   <applet code=BallAnim width=800 height=600>
   </applet>
   */
   //画一个正方形和一个移动的球,实现了Runnable接口。
   public class BallAnim extends Applet implements Runnable
   {
   Thread animThread;
   int ballX=100;//球的x坐标
   int bally;10;//球的Y坐标
   int ballDirection=0;//球移动的方向标志:0表示从上向下移动,1表示从下向上移动

   public void init()
   {
   super.setBackground(Color.blue);

   }
   public void start()
   {
   if (animThread !=null)
   {
   animThread = new Thread(this);
   animThread.start();
   }
   }

   public void stop()
   {
   animThread.stop();
   animThread = null;
   }
   // 实现Runnable接
   public void run()
   {
   Thread.currentThread().setPriority(Thread. NORM_PRIORITY);//设置线呈优先级
NORM_PRIORITY
   while  (true)
   {
   moveBall();
   try
   {
   Thread.sleep(100); // 休眠0.1秒
   }
   catch (Exception sleepProblem)
   {
   // This applet ignores any exceptions if it has a problem sleeping.
   // Maybe it should take Sominex
   }
   }
   }
   private void moveBall ()
   {
   // 球对角运动
   if  (ballDirection == 0)
   {
   ballX-=2; / / 如果球从左向右运动,球的X坐标减少2
   ballY+=2; / / 如果球从上向下运动,球的Y坐标增加2
   if (ballY > 100)//球的Y坐标增加到100, 改变球的运动方向
   {
   ballDirection = 1;
   ballX = 10;
   ballY=100;
   }
   }
   else
   {
   ballX+=2; //如果球从右向左运动,球的X坐标增加2
   ballY-=2;//如果球从下向上运动,球的Y坐标减少2
   if (bally <= 10)//球的X坐标减少到10,改变球的运动方向
   {
   ballDirection = 0;
   ballX = 100;
   ballY=10;
   }
   }
   paint();
   }
   public void paint(Graphics g)
   {
   g.setColor(Color.pink);
   g.fillRect(10, 10, 120, 120);
   g.setColor(Color.green);
   g.fillOval(ballX,ballY,  30,  30);
   }
   }
   ex40_3, html:
     <html>
     <head>
     <title> ex40_3</title>
     </head>
    <body>
   <applet code=" BallAnim.class" width=800 height=400>
</applet> </body> </html>

选项

答案this.setBackground(Color.blue); animThread==null repaint();

解析 本题主要考查Java Applet程序的设计,Java语句的线程机制以及for循环语句。解答本题的关键是比较熟练的掌握JavJava语句的线程机制以及for循环语句的有关知识。线程是程序中的一个执行流。一个执行流是由CPU运行程序的代码、操纵程序的数据所形成的。创建线程的两种基本方法:(1)通过实现Runnable接口创建线程。(2)通过继承Thread类创建线程。控制线程运行的基本方法有:(1)sleep(),使比其低的优先级线程运行。(2)stop(),强行终止线程。(3)run(),创建线程体。(4)start()使新创建的线程处于可运行状态等。在本题中,this.setBackground(Color.blue);语句的功能是设置Applet显示区的背景色为蓝色,if(animThread !=null)语句的功能是判断线程animThread是否存在,语句的功能是重新绘制Applet。
转载请注明原文地址:https://jikaoti.com/ti/sqb0FFFM
0

最新回复(0)