1回顶部 朋友们大家好,Java咖啡馆又开张了!这次为喜欢Java的朋友们奉上Applet系列教程,让我们一起步入图形界面Java应用程序的世界!
本期咖啡馆的实例程序是送给各位同道好友用来讨女孩子欢心的,效果如图所示。图片上有“老鼠爱大米”字样的星辰出现在蔚蓝色的天空中,再加上一些文字辅助,像模像样的新闻呢,一定给她惊喜!
事先声明,这些信息纯属虚构,仅供娱乐,祝各位情人节快乐而已,不过,用心做出来的礼物绝对比上街买的鲜花礼物更弥足珍贵吧!
2回顶部
说到这里,大家很自然会把Applet跟Macromedia公司的Flash技术进行比较。没错,它们有很多相似之处,比如都是通过插件运行在浏览器中,能带给浏览器更丰富的交互功能(比如在线游戏),甚至可以扩展到了高端手机中。相对而言,Flash的强项在于矢量动画,而且非常轻便,一个插件1MB都不到;而Applet是一个全功能技术,与J2EE技术结合起来将给你更大的想象空间,这是Flash技术不能比拟的。
编写一个Applet只需要四个步骤:
1.Import相应的类和包
2.从Applet类继承一个子类
3.实现某些Applet的方法
4.嵌入网页运行
如果你有些无法理解上面的术语,赶快翻开去年的Java咖啡馆连载温故而知新吧!
设计Applet
或许有的朋友接触过类似游戏,但那些网页基本都是通过动态网页技术,比如PHP、ASP、JSP等在服务器端绘制图片然后显示出来的。杀鸡焉用牛刀,通过最简单的Applet,然后再玩一些小技巧同样能达到完美效果,并且不需要特殊的服务器来执行动态网页,普通的静态个人主页空间里也能够实现这个效果。
首先让我们完成这个Applet程序设计,也就是完成Applet编写步骤的前三步。说穿了,这个Applet的工作只是读取背景图片然后绘制“老鼠爱大米”字样。关键问题在于,“老鼠”和“大米”应该可以通过参数控制,比如替换成“帅哥”、“美女”等,这样就可以当做一种服务提供给朋友,让他们通过设定网页参数达到不同的星辰效果,而不是让他们手动修改源代码。实际上,Applet可以通过getParameter()方法从HTML中获取参数。
还是让我们通过源代码来了解Applet吧。打开Eclipse,新建一个NewsApplet类,输入如下代码:
import java.applet.Applet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; public class NewsApplet extends Applet { Image snapshot; String from, to; public void init() { from = null == getParameter("from") ? "老鼠" : getParameter("from"); to = null == getParameter("to") ? "大米" : getParameter("to"); snapshot = getImage(getCodeBase(), "snapshot.jpg"); MediaTracker tracker = new MediaTracker(this); tracker.addImage(snapshot, 0); try { tracker.waitForID(0); } catch (Exception e) { System.out.println("无法下载snapshot.jpg!"); } } public void paint(Graphics g) { g.drawImage(snapshot, 0, 0, snapshot.getWidth(this), snapshot.getHeight(this), this); g.setFont(new Font("华文彩云", Font.BOLD + Font.ITALIC, 14)); g.setColor(Color.white); g.drawString(from, 30, 90); g.drawString("爱", 50, 105); g.drawString(to, 70, 120); } } 下面解释一下代码: 首先,所有Applet程序都是从Applet类继承而来的,所以用extends Applet表示这种继承关系,这样NewsApplet类便拥有了Applet类的所有能力。 接着是三个成员变量,snapshot用来读取snapshot.jpg图片,也就是图中显示的海洋和椰子树的图片,这个图片应该放在Eclipse项目的根目录中,即与最终的class文件处于同一个目录中;from和to用来记录你和她的名字。 然后是两个方法,init()和paint()。每个applet可以实现许多方法,有的表明生命周期,有的负责绘图和事件的触发。比如NewsApplet类中的init()方法将会在Applet每次装载的时候被调用,而paint()方法将会在每次重绘时候被调用。 init()函数非常适合进行资源初始化,比如程序中首先通过getParameter()函数获取网页中提供的参数,然后用getImage()读取图像资源并且用MediaTracker的waitForID()方法确保图片完成下载。 paint()非常重要,它完成了所有的绘图过程。在代码中,首先通过drawImage()方法绘制图像,然后再适当的位置把星辰的文字画上去即可。3回顶部
OK,保存一下项目,然后可以点击Eclipse的Run菜单的Run as-Java Applet项来预览这个Applet了,是不是很简单?
结合网页
把Applet嵌入网页很简单,只要一个<applet>标签即可。拿我们的NewsApplet类举例,在Eclipse项目的根目录中新建一个sample.htm,源代码如下:
<html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 4回顶部
由于JavaScript的语法与Java还是非常接近的,所以请参考注视自行阅读代码。需要注意的是,由于Java默认的字符集是Unicode,所以把网页的内码设成UTF-8可以省却非常多的麻烦。
根据这个Applet与JavaScript结合编程思路,你能够做出许多的创意,记得跟大家分享哦。
我只想用这个Applet
这个Applet已经上传至http://www.cfan.com.cn/11program/200503/index.htm,欢迎大家实行拿来主义。你可以填入你的名字(比如:至尊宝)以及她的名字(比如:白晶晶),提交以后便可以看到最终结果。然后把地址栏中长长的一串URL全部复制给你的她,当她用浏览器打开的时候便可以看到你精心为她准备的情人节礼物了。
如果你无法得到正确的结果,有这么几种可能:
1.需要升级Java虚拟机。Windows内置的Microsoft Virtual Machine是基于1997年Java1.1版本的,距今已经有相当长的时间了。另一方面,2007年12月以后微软公司便没有义务在Windows中内置对Java的支持了。现在的J2SE已经推出了5.0版本,是一个成熟而且被广泛采用的技术。所以,你应该毫不犹豫地把你的系统中的VM升级到Sun公司的最新版本。注意,微软公司虽然极力推荐人们把Java程序向他们公司的C#和J#移植,但是它们都不是跨平台的。更有甚者,由于微软的不正当竞争,单方面提早从Windows系统中去掉了对Java的支持。纵然罚了许多款,也无法挽回Windows XP默认不安装Java运行时环境的局面。所以,要看到Applet的执行结果,首先请到http://java.sun.com/j2se/1.5.0/download.jsp下载并安装Java运行时环境。
2.浏览器必须支持JavaScript的运行。
3.MyIE等第三方浏览器有可能屏蔽Applet,请用IE浏览该网页。
欢迎到garychan.3322.org提出建议或者意见,让我们共同享受Java技术带来的体验。
如果你觉得这期咖啡馆还不解渴,下面是一些由Gary推荐的阅读材料:
★Sun公司官方的Java教程
http://java.sun.com/docs/books/tutorial/index.html
这个教程是由Sun维护并且不断更新的,其中Getting Started和Writing Applets两章可以让您掌握更多的Applet知识。
★洪恩在线的Java Applet实例讲解
http://www.hongen.com/pc/homepage/applet/
提供一个简单的Java Applet入门,以及非常丰富的例程。
|
正在阅读:Java咖啡馆(10):情人节的AppletJava咖啡馆(10):情人节的Applet
2005-06-01 15:45
出处:
责任编辑:moningfeng