在网页上提示:start:applet not initialized.错误
我的JSP文件和CLASS是放在同一目录下的,请达人帮我看看是什么错误,我把CLASS都贴出来
test.jsp文件:
<html>
<body>
<jsp:plugin
type = "applet"
code = "Defend.class"
codebase = "."
jreversion = "1.2"
width = "300"
height = "500"
>
</jsp:plugin>
</body>
</html>Bomb类:
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Graphics;public class Bomb {
int bx;//炸弹的初始x坐标
int by;//炸弹的初始y坐标
int r;//炸弹的的半径
Color bColor;//炸弹的颜色
AudioClip bAudio;//炸弹的声音
Defenser def;//积分 private final int lowy=480;
private final int upy=20; public Bomb(int bx,int by,int r,Color bColor,AudioClip bAudio,Defenser def){
this.bx=bx;
this.by=by;
this.r=r;
this.bColor=bColor;
this.bAudio=bAudio;
this.def=def;
} //画出炸弹图形
public void DrawBomb(Graphics g){
g.setColor(bColor);
g.fillOval(bx,by,r,r);
} //炸弹移动
public boolean down(){
by+=def.getSpeed();
return wasHitEarth();
} //反向回弹炸弹,并根据积分加快炸弹速度
public void isRebound(){
def.addSpeed();
} //是否点中炸弹,如果是,则积分增加,并且炸弹消失,炸弹从初始位置重新开始
public boolean userHit(int mx,int my){
double x=bx-mx;
double y=by-my;
double dis=Math.sqrt(x*x+y*y);
if(dis<r){
def.addScore(1);
return true;
}
else{
return false;
}
} //炸弹是否碰地,如果碰地生命减少
public boolean wasHitEarth(){
if(by>lowy){
bAudio.play();
return true;
}
else{
return false;
}
}
}Defend类:
import java.applet.Applet;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.AudioClip;
import java.awt.Cursor;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Random;public class Defend extends Applet implements Runnable,MouseListener{
private Defenser def;
private Bomb[] bombs;
private int count; Thread th;
Cursor c;
Color clist; AudioClip deathSound;
AudioClip exploseSound; Random rand=new Random(); private Image bgImage;
private Graphics bg; //初始化所有对象,包括声音文件的加载,Bomb类的生成,鼠标的形状等
public void init(){
//初始化鼠标形状
c=new Cursor(Cursor.HAND_CURSOR);
this.setCursor(c);
//初始化炸弹个数
count=6;
//设置背景颜色
setBackground(Color.BLACK);
//设置鼠标监听
addMouseListener(this);
//初始化Defenser类
def=new Defenser(0,10,2);
//加载声音文件
deathSound=getAudioClip(getCodeBase(),"death.wav");
exploseSound=getAudioClip(getCodeBase(),"gun.wav");
//初始化Bomb类
addBomb(count);
} public void start(){
th=new Thread(this);
th.start();
} public void stop(){} public void destroy(){
removeMouseListener(this);
} public void run(){
while(true){
if(def.getLife()>0){
for(int i=0;i<bombs.length;i++){
if(bombs[i].down()){
def.death(1);
addBombNew(i);
}
}
repaint();
try {
Thread.sleep(20);
}
catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
} public void addBomb(int n){
bombs=new Bomb[n]; for(int i=0;i<n;i++){
clist = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
bombs[i]=new Bomb(rand.nextInt(260),20+i*5,20,clist,deathSound,def);
}
} public void addBombNew(int i){
clist = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
bombs[i]=new Bomb(rand.nextInt(260),20+i*5,20,clist,deathSound,def);
def.addSpeed();
} public void paint(Graphics g){
if(def.getLife()>0){
g.setColor(Color.green);
g.drawString("分数:"+def.getScore(),10,40);
g.drawString("生命:"+def.getLife(),200,40);
for(int i=0;i<bombs.length;i++){
bombs[i].DrawBomb(g);
}
}
else if(def.getLife()<=0){
g.setColor(Color.green);
g.drawString("Game Over",90,240);
g.drawString("总得分:"+def.getScore(),90,300);
}
} //双缓冲图像
public void update(Graphics g){
//如果bgImage为空,则初始化
if(bgImage==null){
bgImage=createImage(this.getSize().width,this.getSize().height);
bg=bgImage.getGraphics();
}
//设置bg的背景颜色
bg.setColor(getBackground());
//填充长方形框架
bg.fillRect(0,0,this.getSize().width,this.getSize().height);
//设置bg的前景色
bg.setColor(getForeground());
paint(bg);
g.drawImage(bgImage,0,0,this);
} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} //鼠标点击事件处理
public void mousePressed(MouseEvent e){
int mx=e.getX();
int my=e.getY(); for(int i=0;i<bombs.length;i++){
//判断鼠标是否点击到炸弹
if(bombs[i].userHit(mx,my)){
exploseSound.play();
bombs[i].isRebound();
addBombNew(i);
}
}
} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} }
Defenser 类:
public class Defenser {
private int score;//积分
private int life;//生命
private int speed;//速度 public Defenser(int score,int life,int speed){
this.score=score;
this.life=life;
this.speed=speed;
} //取得当前积分值
public int getScore(){
return score;
} //取得当前生命值
public int getLife(){
return life;
} //取得当前的速度
public int getSpeed(){
return speed;
} //积分增加
public void addScore(int n){
score+=n;
if(score>0&&score%20==0){
life++;
}
} //生命减少
public void death(int n){
life-=n;
} //速度增加
public void addSpeed(){
if(score>0&&score%100==0){
speed++;
}
}
}
我的JSP文件和CLASS是放在同一目录下的,请达人帮我看看是什么错误,我把CLASS都贴出来
test.jsp文件:
<html>
<body>
<jsp:plugin
type = "applet"
code = "Defend.class"
codebase = "."
jreversion = "1.2"
width = "300"
height = "500"
>
</jsp:plugin>
</body>
</html>Bomb类:
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Graphics;public class Bomb {
int bx;//炸弹的初始x坐标
int by;//炸弹的初始y坐标
int r;//炸弹的的半径
Color bColor;//炸弹的颜色
AudioClip bAudio;//炸弹的声音
Defenser def;//积分 private final int lowy=480;
private final int upy=20; public Bomb(int bx,int by,int r,Color bColor,AudioClip bAudio,Defenser def){
this.bx=bx;
this.by=by;
this.r=r;
this.bColor=bColor;
this.bAudio=bAudio;
this.def=def;
} //画出炸弹图形
public void DrawBomb(Graphics g){
g.setColor(bColor);
g.fillOval(bx,by,r,r);
} //炸弹移动
public boolean down(){
by+=def.getSpeed();
return wasHitEarth();
} //反向回弹炸弹,并根据积分加快炸弹速度
public void isRebound(){
def.addSpeed();
} //是否点中炸弹,如果是,则积分增加,并且炸弹消失,炸弹从初始位置重新开始
public boolean userHit(int mx,int my){
double x=bx-mx;
double y=by-my;
double dis=Math.sqrt(x*x+y*y);
if(dis<r){
def.addScore(1);
return true;
}
else{
return false;
}
} //炸弹是否碰地,如果碰地生命减少
public boolean wasHitEarth(){
if(by>lowy){
bAudio.play();
return true;
}
else{
return false;
}
}
}Defend类:
import java.applet.Applet;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.applet.AudioClip;
import java.awt.Cursor;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Random;public class Defend extends Applet implements Runnable,MouseListener{
private Defenser def;
private Bomb[] bombs;
private int count; Thread th;
Cursor c;
Color clist; AudioClip deathSound;
AudioClip exploseSound; Random rand=new Random(); private Image bgImage;
private Graphics bg; //初始化所有对象,包括声音文件的加载,Bomb类的生成,鼠标的形状等
public void init(){
//初始化鼠标形状
c=new Cursor(Cursor.HAND_CURSOR);
this.setCursor(c);
//初始化炸弹个数
count=6;
//设置背景颜色
setBackground(Color.BLACK);
//设置鼠标监听
addMouseListener(this);
//初始化Defenser类
def=new Defenser(0,10,2);
//加载声音文件
deathSound=getAudioClip(getCodeBase(),"death.wav");
exploseSound=getAudioClip(getCodeBase(),"gun.wav");
//初始化Bomb类
addBomb(count);
} public void start(){
th=new Thread(this);
th.start();
} public void stop(){} public void destroy(){
removeMouseListener(this);
} public void run(){
while(true){
if(def.getLife()>0){
for(int i=0;i<bombs.length;i++){
if(bombs[i].down()){
def.death(1);
addBombNew(i);
}
}
repaint();
try {
Thread.sleep(20);
}
catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
} public void addBomb(int n){
bombs=new Bomb[n]; for(int i=0;i<n;i++){
clist = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
bombs[i]=new Bomb(rand.nextInt(260),20+i*5,20,clist,deathSound,def);
}
} public void addBombNew(int i){
clist = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
bombs[i]=new Bomb(rand.nextInt(260),20+i*5,20,clist,deathSound,def);
def.addSpeed();
} public void paint(Graphics g){
if(def.getLife()>0){
g.setColor(Color.green);
g.drawString("分数:"+def.getScore(),10,40);
g.drawString("生命:"+def.getLife(),200,40);
for(int i=0;i<bombs.length;i++){
bombs[i].DrawBomb(g);
}
}
else if(def.getLife()<=0){
g.setColor(Color.green);
g.drawString("Game Over",90,240);
g.drawString("总得分:"+def.getScore(),90,300);
}
} //双缓冲图像
public void update(Graphics g){
//如果bgImage为空,则初始化
if(bgImage==null){
bgImage=createImage(this.getSize().width,this.getSize().height);
bg=bgImage.getGraphics();
}
//设置bg的背景颜色
bg.setColor(getBackground());
//填充长方形框架
bg.fillRect(0,0,this.getSize().width,this.getSize().height);
//设置bg的前景色
bg.setColor(getForeground());
paint(bg);
g.drawImage(bgImage,0,0,this);
} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} //鼠标点击事件处理
public void mousePressed(MouseEvent e){
int mx=e.getX();
int my=e.getY(); for(int i=0;i<bombs.length;i++){
//判断鼠标是否点击到炸弹
if(bombs[i].userHit(mx,my)){
exploseSound.play();
bombs[i].isRebound();
addBombNew(i);
}
}
} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} }
Defenser 类:
public class Defenser {
private int score;//积分
private int life;//生命
private int speed;//速度 public Defenser(int score,int life,int speed){
this.score=score;
this.life=life;
this.speed=speed;
} //取得当前积分值
public int getScore(){
return score;
} //取得当前生命值
public int getLife(){
return life;
} //取得当前的速度
public int getSpeed(){
return speed;
} //积分增加
public void addScore(int n){
score+=n;
if(score>0&&score%20==0){
life++;
}
} //生命减少
public void death(int n){
life-=n;
} //速度增加
public void addSpeed(){
if(score>0&&score%100==0){
speed++;
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货