首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小初学者的程序看不懂,请过来看看!一定给分~

2012-01-20 
小菜鸟的程序看不懂,请大虾过来看看!!一定给分~~~!!!!初学java,看了本Java2范例入门与提高,此书上18页有个

小菜鸟的程序看不懂,请大虾过来看看!!一定给分~~~!!!!
初学java,看了本Java   2范例入门与提高,此书上18页有个水波效果的例子,费了好大的劲,把上面的代码敲了下来:   编译时出了三个警告,但也能运行.
想弄明白是怎么回事,哪位大虾赐教!!
另\:书上对这个例子没有过多的解释,很多函数我也不知道什么作用,哪位大虾能不辞劳苦给注释一下,谢谢!!

import   java.applet.Applet;//引入Applet类
import   java.awt.*;//引入图形类
public   class   splash   extends   Applet   implements   Runnable{
        int   XMAX   =   112;
      //现在的高度
        float[]   m_Height   =   new   float[XMAX];
      //移动之前的值
        float[]   m_G   =   new   float[XMAX];
      //下载因素
        float   b=1.01f;
      //   水波传播速度
        float   fWeight   =3;
        private   Thread   m_NAMI2D=null;

    //处理鼠标事件
        public   boolean   mouseDown(Event   event,int   i,int   j)
        {
                m_Height[i/4-1]+=j/2;
                m_Height[i/4]+=j;
                m_Height[i/4+1]+=j/2;
                return   false;  
        }
    //显示applet的方法
        public   void   paint(Graphics   g)
        {
                g.setColor(Color.blue);
                float   f1=3F   *   fWeight;
                float   f2=f1-2.0F;
                m_Height[0]   =   m_Height[1];
                m_Height[XMAX-1]   =   m_Height[XMAX-2];
                float   f   =   m_Height[0];
                for(int   i=1;i <XMAX-1;i++)
                {
                        float   f3   =   ((f+f2*m_Height[i]+m_Height[i+1])/f1+m_G[i])/b;
                        f=m_Height[i];
                        m_G[i]   =   f3   -   f;
                        m_Height[i]   =   f3;
                        g.clearRect((i-1)*4,(int)f3   -30,4,60);
                        g.fillRect((i-1)*4,(int)f3+30,4,60);    
                }
      }
      //此方法实现了runnable,它是线程主体。
      public   void   run()
      {
            do
                    try
                    {
                            repaint();


                            Thread.sleep(50L);  
                    }
                    catch(InterruptedException   ex)
                    {
                            stop();
                    }
              while(true);      
        }


//浏览器调用此方法告诉applet开始运行创建一个线程
        public   void   start()
        {
                if   (m_NAMI2D==null)
                {
                        m_NAMI2D=   new   Thread(this);
                        m_NAMI2D.start();  
                }      
        }
    //停止线程
        public   void   stop()
        {
              if(m_NAMI2D!=null)
              {
                    m_NAMI2D.stop();
                    m_NAMI2D=null;    
              }          
        }    
//更新applet
          public   void   update(Graphics   g)
          {
                  paint(g);    
            }    
}

编译时却出现警告3个:
D:\yopeng\javaexam> javac   -Xlint   splash.java
splash.java:16:   warning:   [deprecation]   mouseDown(java.awt.Event,int,int)   in   java
.awt.Component   has   been   deprecated
        public   boolean   mouseDown(Event   event,int   i,int   j)
                                      ^
splash.java:73:   warning:   [deprecation]   stop()   in   java.lang.Thread   has   been   depre
cated
                    m_NAMI2D.stop();
                                    ^
splash.java:3:   warning:   [serial]   serializable   class   splash   has   no   definition   of
serialVersionUID
public   class   splash   extends   Applet   implements   Runnable{
              ^
3   warnings




[解决办法]
有WARNING没所谓啊,只不过你是使用了不建议的方法。比如
mouseDown(java.awt.Event,int,int) in java.awt.Component


[解决办法]
不懂 帮顶
[解决办法]
public boolean mouseDown(Event event,int i,int j)
======================================================
这个方法已经过时了,不知道从什么版本就开始改为新的方法了,就是被弃用了
m_NAMI2D.stop();
同上
serializable class splash has no definition of
serialVersionUID

这个就是source编码规范级的了
好像是序列id什么的
好像是
final static id = ...你可以用eclipse,你点一下,就回帮你生成.
[解决办法]
可以在api上查一下mouseDown,那上面应该有替代的方法
[解决办法]
有警告没关系,jdk不断升级过程中要保证向上兼容,也就是用老版编译的代码在新版本环境中也要求能运行,这就导致有些类或方法现在被更新了,有更好的方法了,不建议使用老的方法,但老的方法还是保留的,所以会有警告,但不会影响运行.

至于那个什么serialVersionUID也是新版本的特性,提供对象序列化ID是sun公司建议的一个好的编程习惯,但不提供也不影响运行
[解决办法]
呵呵,别把马鞍套在汽车上

热点排行