MyEclipse6Java开发中文教程 开发功能和Jgoo的 AWT/Swing/SWT开发能力。而 Eclipse号称开源免费这么久了,真 是没想到竞没有一个好使的免费界面设计器( Igloo不能用于商业),只能说是利益使然了。 182 Applet开发 本节讨论 Applet的基本开发,即以手工编码的方式进行开发,在182之后的章节介绍 可视化开发 1821 Applet的 Helloworld开发 首先让我们新建一个Java项目: Applet7est,接着选择新建类文件 applets: MyApplet, 其代码清单如下 My Applet java package applets import java. awt. Colori import java. awt. Graphics import java. awt. Image public class MyApplet extends java applet Applet public void paint(Graphics gte g. setcolor(Color green) g. fill3DRect(0, 0, getwidth()-l, getHeight()-1, true g setColor(Color decode("0x0000ff))i g drawString Hello Applet! ", 20) g setcolor(new Color (200, 20, 155))i g. drawstring("你好,自定义颜色!",20,40); /Image img= getImage(this getclass().getResource("usb.Jpg)) g drawImage(img, 20, 60, this) 这段代码定义了一个 Applet,并覆盖了 Applet的绘图方法pant( Graphics g),这个方法 是由 Applet的解释器调用的,传递的参数是一个图形对象。图形对象就是Java中作图的原 始对象,可以画点,线,多边形,椭圆,文字,还可以画已经存在的图片。这段代码所执行 的操作就是:设置画笔颜色为绿色,在坐标为(0,0)的点开始,以 Applet自身显示的高 度减1为3D的矩形高, Applet自身宽度减1为3D的矩形宽,填充绘制一个突起的3D矩 形(gf3 DRect0方法的最后一个参数即使突起或者凹陷,取值为 boolean);随后从颜色 字符串0x0000解析出Java中的颜色对象一-蓝色,并在坐标为(20,20)的点开始绘 刘长炯著
MyEclipse 6 Java 开发中文教程 6 刘长炯著 开发功能和 JIgloo 的 AWT/Swing/SWT 开发能力。而 Eclipse 号称开源免费这么久了,真 是没想到竟没有一个好使的免费界面设计器(Jigloo 不能用于商业),只能说是利益使然了。 18.2 Applet 开发 本节讨论 Applet 的基本开发,即以手工编码的方式进行开发,在 18.2 之后的章节介绍 可视化开发。 18.2.1 Applet 的 HelloWorld 开发 首先让我们新建一个 Java 项目:AppletTest,接着选择新建类文件 applets. MyApplet, 其代码清单如下: MyApplet.java package applets; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; public class MyApplet extends java.applet.Applet { public void paint(Graphics g) { g.setColor(Color.green); g.fill3DRect(0, 0, getWidth() - 1, getHeight() - 1, true); g.setColor(Color.decode("0x0000ff")); g.drawString("Hello Applet!", 20, 20); g.setColor(new Color(200, 20, 155)); g.drawString("你好,自定义颜色!", 20, 40); Image img = getImage(this.getClass().getResource("usb.jpg")); g.drawImage(img, 20, 60, this); } } 。这段代码定义了一个 Applet,并覆盖了 Applet 的绘图方法 paint(Graphics g),这个方法 是由 Applet 的解释器调用的,传递的参数是一个图形对象。图形对象就是 Java 中作图的原 始对象,可以画点,线,多边形,椭圆,文字,还可以画已经存在的图片。这段代码所执行 的操作就是:设置画笔颜色为绿色,在坐标为(0,0)的点开始,以 Applet 自身显示的高 度减 1 为 3D 的矩形高,Applet 自身宽度减 1 为 3D 的矩形宽,填充绘制一个突起的 3D 矩 形(g.fill3DRect()方法的最后一个参数即使突起或者凹陷,取值为 boolean);随后从颜色 字符串 0x0000ff 解析出 Java 中的颜色对象――蓝色,并在坐标为(20,20)的点开始绘
MyEclipse6Java开发中文教程 制一个字符串He| o Applet;接下来则使用RGB格式(物理上讲的,颜色的三原色,红绿 蓝,每个的取值为0到255)定义了画笔的颜色为红200,20,155,并在坐标为(20,40) 的点开始绘制一个字符串你好,自定义颜色!随后使用 Applet自带的 getImage(URL)方法 从相对路径读取了一张文件名为 usb. jpg的图片(只支持格式jpg,gf和png),并在坐标为 (20,60)的点绘制了这个图片,最后一个参数叫做 ImageObserver,图片检测器,即 applet 自身,用来探测当图片加载完的时候才会绘制这张图。 这就是早期 Applet的主要用法,即自己画图做动画,再加上播放声音,当时最大的用 处就是做一些Aplt的小游戏,例如俄罗斯方块等等,甚至还有公司做了很棒的游戏,例 如有一次在EA看到了 Applet版本的在线红警 接下来我们来运行这个例子,选择菜单Run> Run as>1 Java Applet,即可在 Eclipse 中启动并运行此页面,弹出的窗口和运行界面如图182所示。 小程序查看回回区 pple Hello Applet! 你好,目定义颜色! 小程序已启动。 图183运行中的 Applet 1822 Applet的运行方式 那么这个 Applet是怎么样运行的呢?让我们使用专业进程管理器看看运行时的命令 1]: D: WavaMyEclipse6 Ore lbinyavawexe -Djava security policy=java policy. applet classpath E: Workspace lAppletTestbin sunapplet Appletviewer applets. MyApplet1210070089093htm,当前工作目录是E: workspace lAppletTestbinl 很好,去看看,原来运行时候莫名其妙多了两个文件 java policy. applet和 applets. MyApplet11210070089093htm,文件内容分别是 applets. My Applet1210070089093 html <html> <body> <applet code=applets. MyApplet class width="200"height="200"> </html> java policy. applet /AUTOMATICALLY GENERATED ON Tue Apr 1617: 20: 59 EDT 2002/ 刘长炯著
MyEclipse 6 Java 开发中文教程 7 刘长炯著 制一个字符串 Hello Applet!;接下来则使用 RGB 格式(物理上讲的,颜色的三原色,红绿 蓝,每个的取值为 0 到 255)定义了画笔的颜色为红 200,20,155,并在坐标为(20,40) 的点开始绘制一个字符串你好,自定义颜色!;随后使用 Applet 自带的 getImage(URL)方法, 从相对路径读取了一张文件名为 usb.jpg 的图片(只支持格式 jpg,gif 和 png),并在坐标为 (20,60)的点绘制了这个图片,最后一个参数叫做 ImageObserver,图片检测器,即 applet 自身,用来探测当图片加载完的时候才会绘制这张图。 这就是早期 Applet 的主要用法,即自己画图做动画,再加上播放声音,当时最大的用 处就是做一些 Applet 的小游戏,例如俄罗斯方块等等,甚至还有公司做了很棒的游戏,例 如有一次在 EA 看到了 Applet 版本的在线红警。 接下来我们来运行这个例子,选择菜单 Run > Run As > 1 Java Applet,即可在 Eclipse 中启动并运行此页面,弹出的窗口和运行界面如图 18.2 所示。 图 18.3 运行中的 Applet 18.2.2 Applet 的运行方式 那么这个 Applet 是怎么样运行的呢?让我们使用专业进程管理器看看运行时的命令 行 : D:\Java\MyEclipse6.0\jre\bin\javaw.exe -Djava.security.policy=java.policy.applet -classpath E:\workspace\AppletTest\bin sun.applet.AppletViewer applets.MyApplet1210070089093.html,当前工作目录是 E:\workspace\AppletTest\bin\, 很好,去看看,原来运行时候莫名其妙多了两个文件 java.policy.applet 和 applets.MyApplet1210070089093.html,文件内容分别是: applets.MyApplet1210070089093.html <html> <body> <applet code=applets.MyApplet.class width="200" height="200" > </applet> </body> </html> java.policy.applet /* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/
MyEclipse6Java开发中文教程 DO NOT EDIT * grant permission java security AllPermission 第二个文件是关系到Java的安全设置,有兴趣的读者可以查找Java的 Policy(策略文件) 相关的内容。第一个文件比较重要,因为 Applet是在浏览器里运行的,前提是用HTML的 APPLET标签将它嵌入页面中,就像在页面中嵌入Fash动画或者图片那样,必选的参数包 括:code,它指定了 Applet的类名,注意写法为包名类名cass:另外两个参数wd和 height制定了 Applet的面板在浏览器中占用的面积,即高度乘以宽度。那么, Applet的标 准运行方式,就是嵌入到网页中使用,使用浏览器打开。此浏览器需要安装Java插件 ( Plug-in),才能正确的加载其中的类文件并执行。此时必须安装了JRE(可以从 htt!ava.com/zhCn)下载或者检查是否安装好了JRE,另外安装完整版的JDK的时候 般也有选择是否安装JRE选项。 OK,让我们总结一下普通用户运行 Applet的必要前提 1.安装了JRE 2.安装了支持Java插件的浏览器(包括, Firefox, Mozilla,, Opera等儿乎所有主流浏 览器) 3.正确开发和发布了 Applet(一般来说网页文件和类文件位于同一个目录下) 现在让我们试一试,在Src目录下新建 My Applet. html,代码清单如下 < DOCTYPE HTML PUBLIC "-//W3C//DTD HTML+4. 01 Transitional//EN"> <html> <head> <title>MyApplet Test</title </head> <applet code="applets. MyApplet class" width=400"height=300> 对不起,您的浏览器不支持 Applet! </apple </body>w/ </html 然后打开项目所在的目录的类文件输出目录(例如bi或者 asses),双击 MyApplet. htm 在浏览器中打开,应该能够看到如下的界面 刘长炯著
MyEclipse 6 Java 开发中文教程 8 刘长炯著 /* DO NOT EDIT */ grant { permission java.security.AllPermission; }; 第二个文件是关系到 Java 的安全设置,有兴趣的读者可以查找 Java 的 Policy(策略文件) 相关的内容。第一个文件比较重要,因为 Applet 是在浏览器里运行的,前提是用 HTML 的 APPLET 标签将它嵌入页面中,就像在页面中嵌入 Flash 动画或者图片那样,必选的参数包 括:code,它指定了 Applet 的类名,注意写法为包名.类名.class;另外两个参数 width 和 height 制定了 Applet 的面板在浏览器中占用的面积,即高度乘以宽度。那么,Applet 的标 准运行方式,就是嵌入到网页中使用,使用浏览器打开。此浏览器需要安装 Java 插件 (Plug-in),才能正确的加载其中的类文件并执行。此时必须安装了 JRE(可以从 http://java.com/zh_CN/)下载或者检查是否安装好了 JRE,另外安装完整版的 JDK 的时候, 一般也有选择是否安装 JRE 选项。 OK,让我们总结一下普通用户运行 Applet 的必要前提: 1. 安装了 JRE; 2. 安装了支持 Java 插件的浏览器(包括 IE,Firefox,Mozilla,Opera 等几乎所有主流浏 览器); 3. 正确开发和发布了 Applet(一般来说网页文件和类文件位于同一个目录下)。 现在让我们试一试,在 src 目录下新建 MyApplet.html,代码清单如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>MyApplet Test</title> </head> <body> <applet code="applets.MyApplet.class" width="400" height="300"> 对不起,您的浏览器不支持Applet! </applet> </body> </html> 。然后打开项目所在的目录的类文件输出目录(例如/bin 或者/classes),双击 MyApplet.html 在浏览器中打开,应该能够看到如下的界面:
MyEclipse6Java开发中文教程 elyApplet Test- indows Internet Explorer E]E: \workspace\AppletTest\binMyApplethtml ☆收藏夹 GMyApplet Test 图Jaa控制台 Hello Applet! Java Plugin 1.6.0-10-beta 使用JR版本1.8.0_10- beta Java Hotspot (TM) Client v 你好,自定义颜色 用户主目录=F:{ Documents and Settings{ BeanSoft.BEAS 清除控制台窗口 f:终结在结束队列上的对象 垃城收集 显示此帮助消息 转储类载入程序列表 打印内存使用 触虫发日志记录 q:隐藏控制台 x:重新载入策略配置 转储系统和部署属性 转储线程列表 清除类载入程序高速缓存 0-5:设置跟踪级别为<n> 图184浏览器中运行的 Applet 此时还会显示一个名为Java控制台的窗口,在这个窗口按下键c,可以清除日志信息,按 下X,然后刷新页面,可以重新载入Jaa类文件(这在调试Apet的时候很有用,因为浏 览器默认是缓存当前显示的 Applet的,不会每次都加载最新的类文件),其它的功能,大家 按照说明按下键盘上的提示就可以了。如果没有看到这个界面,多半您没有安装JRE 接着,我们看下 Applet标签的相对完整的说明 必需的属性 属性|值 描述 hegt|pxes定义 applet的高度 idth pixels定义 applet的宽度 codeURL执行 applet的cass的URL 可选的属性 属性 值 描述 align/ left 定义围绕 applet的文本排列方式 right baseline textor absmiddle absbottom 假如浏览器支持 applet,但无法运行此 applet时,被显 示的替换文本。 刘长炯著
MyEclipse 6 Java 开发中文教程 9 刘长炯著 图 18.4 浏览器中运行的 Applet 此时还会显示一个名为 Java 控制台的窗口,在这个窗口按下键 c,可以清除日志信息,按 下 x,然后刷新页面,可以重新载入 Java 类文件(这在调试 Applet 的时候很有用,因为浏 览器默认是缓存当前显示的 Applet 的,不会每次都加载最新的类文件),其它的功能,大家 按照说明按下键盘上的提示就可以了。如果没有看到这个界面,多半您没有安装 JRE。 接着,我们看下 Applet 标签的相对完整的说明: 必需的属性 属性 值 描述 height pixels 定义 applet 的高度 width pixels 定义 applet 的宽度 code URL 执行 applet 的 class 的 URL 可选的属性 属性 值 描述 align • left • right • top • bottom • middle • baseline • texttop • absmiddle • absbottom 定义围绕 applet 的文本排列方式。 alt text 假如浏览器支持 applet,但无法运行此 applet 时,被显 示的替换文本
MyEclipse6Java开发中文教程 archive URL 当 applet被存储在某个JAVA档案文件或ZIP文件中 时,此 applet的URL adscript|无 允许 Applet和浏览器的 JavaScript交互 codebase URL 指示 applet的基准URL,假如code属性是相对的。 定义围绕 applet的水平间隔。 name 定义针对 applet的唯一名称(用在脚本中的)。 name 定义了包含该 applet的一系列版本的资源名 在工具提示中显示的附加信息。 vspace pixels 定义围绕 applet的垂直间隔 。OK, archive是个很有用的功能,它可以将开发的类库打包成一个或者多个jar或者zip 文件(如何创建JAR我们此前已经讨论过),并以逗号隔开(注意是英文半角的),例如 <applet code=Animator. class archive="applet/cla appletimages jar, applet/sounds jar" width=460 height=160> <param name=foo value=bar> </applet> 当然,一般项目只放一个jar就可以了,多个的时候,务必保持所有的jar都在一个目录 下,否则会出现安全问题导致无法加载。其它有用的功能还包括上面小例子出现的 param 标签。 接下来要说的标签,就是 codebase,它是什么意思呢?假设类文件和HTML文件不在 目录下新建一个网页文件 My AppletRoot html,文件内容如下 <IDOCTYPE HTML PUBLIC"-M3C//DTD HTML 4.01 Transitional/en"> <html> <title>MyApplet Test</title </head> <applet code=applets. My Applet class"codebase="bin"width="400"height="300"> 对不起,您的浏览器不支持 Applet! </html 然后目录结构如此存放 My AppletRoot html bin/applets/MyApplet class 。现在打开此网页文件,很好,也能正确的显示我们的 Applet。反过来,不加 codebase, 浏览器就不知道到何处寻找类文件了。 刚才讨论了半天,是讲的本机运行时候的存放位置,另外发布到服务器上的时候,一定 要把 applet的类单独复制到 Webroot下面,保持刚刚讨论过的目录结构(也可以用jar方 式),才能让访问的用户看到 Applet 刘长炯著
MyEclipse 6 Java 开发中文教程 10 刘长炯著 archive URL 当 applet 被存储在某个 JAVA 档案文件或 ZIP 文件中 时,此 applet 的 URL。 mayscript 无 允许 Applet 和浏览器的 JavaScript 交互。 codebase URL 指示 applet 的基准 URL,假如 code 属性是相对的。 hspace pixels 定义围绕 applet 的水平间隔。 name unique_name 定义针对 applet 的唯一名称(用在脚本中的)。 object name 定义了包含该 applet 的一系列版本的资源名称。 title text 在工具提示中显示的附加信息。 vspace pixels 定义围绕 applet 的垂直间隔。 。OK, archive 是个很有用的功能,它可以将开发的类库打包成一个或者多个 jar 或者 zip 文件(如何创建 JAR 我们此前已经讨论过),并以逗号隔开(注意是英文半角的),例如: <applet code=Animator.class archive="applet/classes.jar , applet/images.jar , applet/sounds.jar" width=460 height=160> <param name=foo value="bar"> </applet> 。当然,一般项目只放一个 jar 就可以了,多个的时候,务必保持所有的 jar 都在一个目录 下,否则会出现安全问题导致无法加载。其它有用的功能还包括上面小例子出现的 param 标签。 接下来要说的标签,就是 codebase,它是什么意思呢?假设类文件和 HTML 文件不在 一个目录下,它就指明了 Java 类文件相对于 HTML 文件所在的位置,例如,我们在项目根 目录下新建一个网页文件 MyAppletRoot.html,文件内容如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>MyApplet Test</title> </head> <body> <applet code="applets.MyApplet.class" codebase="bin" width="400" height="300"> 对不起,您的浏览器不支持 Applet! </applet> </body> </html> ,然后目录结构如此存放: MyAppletRoot.html bin/applets/MyApplet.class bin/applets/usb.jpg 。现在打开此网页文件,很好,也能正确的显示我们的 Applet。反过来,不加 codebase, 浏览器就不知道到何处寻找类文件了。 刚才讨论了半天,是讲的本机运行时候的存放位置,另外发布到服务器上的时候,一定 要把 applet 的类单独复制到 WebRoot 下面,保持刚刚讨论过的目录结构(也可以用 jar 方 式),才能让访问的用户看到 Applet