初学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
想弄明白是怎么回事,哪位大虾赐教!!
另\:书上对这个例子没有过多的解释,很多函数我也不知道什么作用,哪位大虾能不辞劳苦给注释一下,谢谢!!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
mouseDown(java.awt.Event,int,int) in java.awt.Component
======================================================
这个方法已经过时了,不知道从什么版本就开始改为新的方法了,就是被弃用了
m_NAMI2D.stop();
同上
serializable class splash has no definition of
serialVersionUID这个就是source编码规范级的了
好像是序列id什么的
好像是
final static id = ...你可以用eclipse,你点一下,就回帮你生成.
@Deprecated
public boolean mouseDown(Event evt,
int x,
int y)已过时。 从 JDK version 1.1 开始,由 processMouseEvent(MouseEvent) 取代。 stop
@Deprecated
public final void stop(Throwable obj)已过时。 该方法具有固有的不安全性。请参阅 stop() 以获得详细信息。该方法的附加危险是它可用于生成目标线程未准备处理的异常(包括若没有该方法该线程不太可能抛出的已检查的异常)。有关更多信息,请参阅为何不推荐使用 Thread.stop、Thread.suspend 和 Thread.resume?。
==========================================================================
所以说,你最好将这写函数写成他们现在的接班函数.source有警告也不好啊