下面是一个Applet程序,其功能是显示有闪烁特效的从左向右的滚动文字。要求定义6种颜色:RED,GREEN,ORANGE, GRAY,YELLOW,BLUE,让文字在滚动过程中根据文字的位置循环选定—种颜色,并快速切换,达到一边移动一边闪烁的效果,同时要

admin2009-01-15  61

问题 下面是一个Applet程序,其功能是显示有闪烁特效的从左向右的滚动文字。要求定义6种颜色:RED,GREEN,ORANGE, GRAY,YELLOW,BLUE,让文字在滚动过程中根据文字的位置循环选定—种颜色,并快速切换,达到一边移动一边闪烁的效果,同时要求通过htm1文件传递所显示的文字和延迟时间的参数,Applet程序能够根据参数实现显示功能。请改正程序中的错误(有下划线的语句),使程序能输山正确的结果。
   注意:不改动程序的结构,不得增行或删行。
   程序运行结果如下:
          
     import java.applet.Applet;
     import java.awt.*;
     /*
     <applet code="ex12_3.class" width=800 height=400 >
       <param name=text value="Welcome to NCR Examination!">
       <param name=delay value="50">
     </applet>
     */
     public class ex12_3 extends Applet implements Runnable{
        private String strText;
        private Thread thMover = null;
        private int nX, nY, nDelay;
        private Font fFont ;
        private int getParameter(String s1,  int s2){
           String s = getParameter(s1)  ;
           return  (s  != null)  ? Integer•parseInt(s)  :  s2  ;
     }
     private String getParameter(String s1,  String s2){
           String s = getParameter(s1)  ;
           return (s != null)  ? Integer.parseInt(s)  : s2 ;
     }
           public void init(){
              fFont = new Font("TimesRome",  Font.BOLD,  40)  ;
              setBackground(Color.black);
              strText = getParameter("text","Put your message in strText parm");
              nX = getSize().height;
              nY = 80 ;
              nDelay = getParameter("delay",  80)  ;
           }
           public void start(){
              if(thMover == null){
                thMover = new Thread(this);
                thMover.start();
              }
           }
           public void stop() {
                thMover = null;
           }
           public void run(){
                while(thMover != null){
                   try{
                      Thread.sleep(nDelay);
                   }
                   catch(InterruptedException e)  {  }
                   repaint ( );
               }
           }
           public void paint(Graphics g){
                   switch(nX % 6){
                   case 0: g.setColor(Color. RED);
                        break;
                   case 1: g.setColor(Color. GREEN)
                        break;
                   case 2: g.setColor(Color. ORANGE;
                        break;
                   case 3: g.setColor(Color.GRAY);
                        break;
                   case 4: g.setColor(Color.YELLOW ;
                        break;
                   case 5: g.setColor(Color. BLUE);
                   }
                   g.setFont(fFont);
                   g.drawString(strText, nX,  nY);
                   if(nX <= 0)
                   nX= getSize ( ) .width ;
           }
     }
     ex12 3.htm1
     <HTML>
     <HEAD>
        <TITLE>ex12_3</TITLE>
     </HEAD>
     <BODY>
     <applet code="exl2_3.class" width=800 height=400 >
     <param name=text value="Welcome to NCR Examination!">
     <param name=delay value="50">
       </applet>
       </BODY>
     </HTML>

选项

答案return (s != null) ? S : S2 nX=getSize().width --nX<= 0

解析 本题主要考查Applet窗口中使用多线程显示动态文字,Applet与htm1文件的信息交换以及方法重载的编程思想。解题关键是熟练掌握在Applet窗口中控制文字显示和改变文字的颜色大小等基本操作,熟悉Applet下的多线程编程思想,熟练应用方法重载解决实际应用,以及掌握Applet和htm1文件之间通过传递参数来进行信息交互的方法。本题中,第一处,由于s是String类的对象,因此不需要做类型转换;第二处,nX是代表了文字的横坐标位置,应该是getSize().width:第三处,只判断了文字横坐标是否溢出屏幕,但是没有对坐标值改变,文字不会移动,因此需要将nX改为--nX。
转载请注明原文地址:https://jikaoti.com/ti/WkkiFFFM
0

最新回复(0)