大家好,又见面了,我是你们的朋友全栈君。
1.Applet 如何运行
不同于 java应用程序,运行applet需要在对应html文件通过<applet>指定applet程序名,即可在浏览器中运行.
2.Applet如何编写
我的工具是 eclipse。新建一个类
该类必须是public且继承Applet。文件名与类名一样
3.Applet类中方法的执行顺序与生命周期
- 先执行构造方法
- 再执行init()进行一些数据,变量初始化
- 再执行start()方法,start()方法会调用paint()方法进行图形的绘制与显示。一般重写paint()方法即可。
生命周期如图:
4.先上一个HellowWorld简单例子
public class HelloWorld extends Applet{
public void paint(Graphics g){
g.drawString("Hello World!", 25, 25);
}
}
Graphics类参数是画图的关键,可以画点,线,矩形,文字,图像等,还可以设置颜色和字体。
- java项目名叫applet,然后用eclipse编译运行,HelloWorld.class在bin下的test包里,HelloWorld.java在src的test包里。我们只需要把对应的.html文件放到和.class文件在一起就行了,.html文件内容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>applet测试</title>
</head>
<body>
<applet
code="test.HelloWorld.class" codebase="D:/eclipse/xiangmu/applet/bin"
width="100" height="100"
></applet>
</body>
</html>
- code:为.class文件名 [package].appletfile.class 包名有就写,没有就不写。包名之前不能再有其它的了。
- codebase:[package].appletfile.class 的基地目录。如果不写这个属性,就上面的例子而言。默认为html的url那肯定带了包名test,会和code中的[package]冲突,肯定报错。所以上面写成了到/bin目录就可以了。
上面2个 再加上width 和 height 这四个属性一般必须要设定。
上面例子效果如下:
5.<applet>属性介绍
上面已经介绍了四个,下面介绍其它的:
name=”为applet定一个名字,用于识别”
alt=”applet显示不出来时显示的文字”
<param name=”date1″ value=”123″> 传参数给applet.java,value可以是任何东西,如文件(文件名),string ,int(默认是string,得到参数时要转换),等。
<body>
<applet
code="test.HelloWorld.class" codebase="D:/eclipse/xiangmu/applet/bin"
width="100" height="100"
alt="显示错误"
name="oneapplet"
<param name="date1" value="123">
></applet>
</body>
6.applet.java中对来自html的参数进行获取
问题是上面代码居然报错了, F u c k
修改地方如下:
- 首先上面html有个错误<param>位置放错了:应该照如下放置:
<applet> <param ></applet>
- 还有就是java文件中得到参数时也要改(不是说好的是string吗?搞不懂)
s= getParameter(“date1″)+””; //对传来的参数获取,后面添加 +””
不按照上面改一改,真的不会相信有参数传来。
7.其他参数的获取
如照片,首先把img1.jpg放到和html和.class一起。然后在<param>中传文件名img1,jpg,然后在java中获取参数,并得到图片.
<param name=”img” value=”img1.jpg” />
public class HelloWorld extends Applet {
String s ;
Image image;
public void init(){
s= getParameter("img")+""; //取得传来参数(图片名字)
//得到照片(图片目录 , 图片名字)
//图片目录可用 getCodeBase() 或 getDocumentBase()获取
image = getImage(getCodeBase() , s);
}
public void paint(Graphics g){
g.drawString("Hellow World !", 25, 25); //(25,25)指文字 左下角 的坐标
g.drawString(s, 50, 50);
g.drawImage(image , 25 , 25 , this); //this指当前applet作为监视器,一般用this。(25,25)是坐标
}
}
还有声音文件的参数获取等
AudioClip sound = getAudioClip(url , String name); url = getCodeBase(); name = getParameter();
sound.play(); sound.loop(); sound.stop();
8.Applet事件处理
如鼠标的点击事件,代码如下:
public class HelloWorld extends Applet implements MouseListener {
int x = 25;
int y =25;
public void init(){
addMouseListener(this);
}
public void paint(Graphics g){
g.drawString("Hellow World !", x, y);
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
x = e.getX();
y = e.getY();
repaint(); //会调用update()来重绘刷新图形
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
9.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157064.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...