java applet

1 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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值