JAVA Applet小应用程序入门

JAVA Applet小应用程序入门1.Applet如何运行不同于java应用程序,运行applet需要在对应html文件通过<applet>指定applet程序名,即可在浏览器中运行.2.Applet如何编写我的工具是eclipse。新建一个类该类必须是public且继承Applet。文件名与类名一样3.Applet类中方法的执行顺序与生命周期先执行构造方法 再执行init()进行一些数…

大家好,又见面了,我是你们的朋友全栈君。

1.Applet 如何运行

不同于 java应用程序,运行applet需要在对应html文件通过<applet>指定applet程序名,即可在浏览器中运行.

2.Applet如何编写

我的工具是 eclipse。新建一个类

该类必须是public且继承Applet。文件名与类名一样

3.Applet类中方法的执行顺序与生命周期

  • 先执行构造方法
  • 再执行init()进行一些数据,变量初始化
  • 再执行start()方法,start()方法会调用paint()方法进行图形的绘制与显示。一般重写paint()方法即可。

生命周期如图:

JAVA Applet小应用程序入门

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 这四个属性一般必须要设定。

上面例子效果如下:

JAVA Applet小应用程序入门

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的参数进行获取

JAVA Applet小应用程序入门

问题是上面代码居然报错了, 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.

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157064.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【大数据】最新大数据学习路线(完整详细版,含整套教程)

    【大数据】最新大数据学习路线(完整详细版,含整套教程)大数据学习路线java(Javase,javaweb)Linux(shell,高并发架构,lucene,solr)Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)机器学习(R,mahout)Storm(Storm,kafka,redis)Spark(scala,spark,sparkcore,s…

    2022年6月10日
    32
  • [Python3]Numpy数组转置的三种方法T、transpose、swapaxes「建议收藏」

    [Python3]Numpy数组转置的三种方法T、transpose、swapaxes「建议收藏」天下难事,必作于易;天下大事,必作于细——老子Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环。1.首先数组转置(T)创建二维数组data如下:进行矩阵运算时,经常要用数组转置,比如计算矩阵内积X^TX.这时就需要利用数组转置,如下:2.轴对换之transpose对于高维数组,可以使用轴对换来对多…

    2022年6月2日
    36
  • php 7.2 安装 mcrypt 扩展

    php 7.2 安装 mcrypt 扩展

    2021年10月29日
    41
  • c语言数组介绍

    c语言数组介绍文章目录一、一维数组的创建和初始化1.数组的创建2.数组的初始化3.一维数组的使用4.一维数组在内存中的存储二、二维数组的创建和初始化1.二维数组的创建2.二维数组的创建3.二维数组的创建4.二维数组在内存中的存储二、数组越界1.数组名是什么?一、一维数组的创建和初始化1.数组的创建数组是一组相同类型元素的集合。数组的创建方式:type_tarr_name[const_n];//type_t是指数组的元素类型//const_n是一个常量表达式,用来指定数组的大小数组创建的实

    2022年7月11日
    21
  • 加多宝为什么会输给王老吉_加多宝王老吉占比

    加多宝为什么会输给王老吉_加多宝王老吉占比如果评选世界营销战最激烈案例,2012年爆发的王老吉与加多宝之间的品牌大战一定榜上有名。那是一场由一个小小红罐引发的“血战”。一、缘起加、王之争的来龙动脉我就不细说了,大概起因是若干年前国企广药将其旗下的传统凉茶品牌“王老吉”部分(红罐)租给了与王老吉凉茶创始者后人有关的香港鸿道集团旗下的加多宝集团。这种做法本来十分普遍没啥特别,但没想到的是加多宝的市场运作能力超强,竟然在短短几年内将一种原来…

    2025年7月15日
    1
  • layoutSubviews的使用

    layoutSubviews的使用-(void)layoutSubviews{ }layoutSubviews是对subviews的重新布局以下情况会被调用1.直接调用layoutSubviews.如:[selflayoutSubviews];2.用addSubview添加视图时会触发3.滚动UIScrollView时会触发4.旋转屏幕的时候会触发父视图的layoutSu

    2022年7月15日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号