applet简介

评价:
0
(0用户)

applet简介
含有Applet的网页的HTML文件代码中部带有<applet>和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小应用程序代码并在本地计算机上执行该Applet。Java Applet是用Java语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。在Java Applet中,可以实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗口工具箱(Abstract Window Toolkit, AWT)的窗口环境开发工具。AWT利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等等。与一般的应用程序不同,Applet应用程序必须嵌入在HTML页面中,才能得到解释执行;同时Applet可以从Web页面中获得参数,并和Web页面进行交互。

1.1 applet程序的开发步骤
(1) 编写java文件,比如为test.java,注意要extends Applet;
(2) javac test.java生成test.class(如果有多个class文件,则可以将其加入到一个jar文件中)
(3) 编写html文件,用<applet></applet>标签将applet嵌入.标签的属性详见第3节.
(4) 运行该html文件.

1.2 Applet运行状态
Applet类中的四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()
init():这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。
start():系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。
stop():这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。
destroy():Java在浏览器关闭的时候自动执行。

1.3 applet标签的属性
(1)width: applet在html页面上的宽度
(2)height: applet在html页面上的高度
(3)name: applet在html页面上的名称,用于区别一个html页面上的多个applet
(4)id: 为applet指定一个id属性
(5)archive: 当applet被存储在某个java档案文件中,比如jar,则这里为此applet的URL
(6)code: 执行applet的class的 URL
(7)codebase: 批示applet的基准URL
(8)param: 传递参数

2 SwingWorker
SwingWorker类的目的是实现一个后台线程,可以用它来执行一些费时的操作,而不影响程序的GUI的性能。
可以从sun的官网上下载这个类:SwingWorker.java
SwingWorker类可以简单且方便地用于在一个新的线程中计算一个数值。要使用这个类,你只要创建一个SwingWorker的子类并覆盖SwingWorker.construct()方法来执行计算。然后实例化它,并在这个新实例上调用start()方法。

3 java socket简介
(1)socket的初始化
Socket connection=new Socket(m_strServer, port);

(2)获取输入流和输出流
InputStream in;

OutputStream out;
in=connection.getInputStream();

out=connection.getOutputStream();
(3)接收及发送数据
通过in.read函数来接收数据;
通过out.write函数来发送数据.
(4)关闭连接
connection.close();

4 视频接收及显示的实现

JWebcamPlayer.java是java applet的框架,有init()、start()、stop()、destroy()函数;
所有的socket连接及视频数据接收和显示则用一个线程来处理,这部分工作由SwingWorker.java来处理.SwingWorker.java是一个抽象类,所以在JWebcamPlayer.java中,要创建一个SwingWorker的子类并覆盖SwingWorker.construct()方法,再在这个新实例上调用start()方法,则就启动了数据接收及显示线程.
在JWebcamPlayer.java中的start()函数中:

public void start()
{

private SwingWorker m_worker=null;
m_worker=new SwingWorker()

{

public Object construct()
{
// 建立connect连接
// 数据接收及显示

}
m_worker.start(); // 启动该线程
}
}

4.1 视频显示的原理
在程序中用JLabel来作为图片显示区.JLabel对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。程序中将获取到的数据存入BufferedImage对象中,然后将其转化为ImageIcon,最后通过m_label.setIcon(ImageIcon)显示图片.不断地获取图片并显示,则看起来就是视频.

4.1 init函数
applet启动首先调用init()函数
init()函数中获取html文件中所设的IP地址及端口号.
m_strServer=getParameter(“Server”);
m_strPort = getParameter(“Port”);
html文件中关于applet标签部分:
<applet codebase=”.” archive=”JWebcamPlayer.jar” code=”JWebcamPlayer.class” align=”center” width=”400″ height=”400″>

<param name=”Server” value=”127.0.0.1″>

<param name=”Port” value=”7070″>

</applet>

4.2 start函数
init()函数调用结束则调用start()函数.
start()的程序流程图如下:

start函数程序流程图

4.3 stop()和destroy()函数
stop()和destroy()函数为空.

5 打包
(1)javac SwingWorker.java
(2)javac JWebcamPlayer.java
(3)jar cvf JWebcamPlayer.jar *.class
————————————————
版权声明:本文为CSDN博主「wxm_linux」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wxm_linux/article/details/6439520

注册并通过认证的用户才可以进行评价!

发表评论