网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.初始化接口中的字段.
.中国农历二百年算法及年历程序分.
.Resin with IIS.
.CORBA对象生命周期之生命周期的评.
.返回值过载.
.JAVA与数据库连接方法(二).
.桌面系统的第二次战役 -- 难解难.
.开发java 工具集.
.Spring WebFlow :重用与抽象框架.
.Javascript 中 浅拷贝与深拷贝的.
.JDBC2.0扩展API(1).
.使用JavaMail发送邮件.
.reverse 方法.
.将 Java 应用程序迁移到 .NET(1).
.MIDP2.0中Alert的新特性.
.JDBC的数据库连接池技术研究与应.
.直接用 java 命令行动态生成jpg文.
.使用SWT开发用户图形界面.
.J2EE:美好的蓝图.
.在 java 里面调用 CUI 程序的方法.

Java性能优化技巧之GUI篇

发表日期:2008-1-5


三、GUI篇

    这一部分介绍的内容适合于图形用户界面的应用(Applet和普通应用),要用到AWT或Swing。

    3.1 用JAR压缩类文件

    Java档案文件(JAR文件)是根据JavaBean标准压缩的文件,是发布JavaBean组件的主要方式和推荐方式。JAR档案有助于减少文件体积,缩短下载时间。例如,它有助于Applet提高启动速度。一个JAR文件可以包含一个或者多个相关的Bean以及支持文件,比如图形、声音、Html和其他资源。

    要在HTML/jsp文件中指定JAR文件,只需在Applet标记中加入ARCHIVE = "name.jar"声明。

    3.2 提示Applet装入进程

    你是否看到过使用Applet的网站,注重到在应该运行Applet的地方出现了一个占位符?当Applet的下载时间较长时,会发生什么事情?最大的可能就是用户掉头离去。在这种情况下,显示一个Applet正在下载的信息无疑有助于鼓励用户继续等待。

    下面我们来看看一种具体的实现方法。首先创建一个很小的Applet,该Applet负责在后台下载正式的Applet:

    


import java.applet.Applet;
import java.applet.AppletStub;
import java.awt.Label;
import java.awt.Graphics;
import java.awt.GridLayout;
public class PreLoader extends Applet implements Runnable, AppletStub {
String largeAppletName;
Label label;
public void init() {
// 要求装载的正式Applet
largeAppletName = getParameter("applet");
// “请稍等”提示信息
label = new Label("请稍等..." + largeAppletName);
add(label);
}
public void run(){
try {
// 获得待装载Applet的类
Class largeAppletClass = Class.forName(largeAppletName);
// 创建待装载Applet的实例
Applet largeApplet = (Applet)largeAppletClass.newInstance();
// 设置该Applet的Stub程序
largeApplet.setStub(this);
// 取消“请稍等”信息
remove(label);
// 设置布局
setLayout(new GridLayout(1, 0));
add(largeApplet);
// 显示正式的Applet
largeApplet.init();
largeApplet.start();
}
catch (Exception ex) {
// 显示错误信息
label.setText("不能装入指定的Applet");
}
// 刷新屏幕
validate();
}
public void appletResize(int width, int height) {
// 把appletResize调用从stub程序传递到Applet
resize(width, height);
}
}



    编译后的代码小于2K,下载速度很快。代码中有几个地方值得注重。首先,PreLoader实现了AppletStub接口。一般地,Applet从调用者判定自己的codebase。在本例中,我们必须调用setStub()告诉Applet到哪里提取这个信息。另一个值得注重的地方是,AppletStub接口包含许多和Applet类一样的方法,但appletResize()方法除外。这里我们把对appletResize()方法的调用传递给了resize()方法。

    3.3 在画出图形之前预先装入它

    ImageObserver接口可用来接收图形装入的提示信息。ImageObserver接口只有一个方法imageUpdate(),能够用一次repaint()操作在屏幕上画出图形。下面提供了一个例子。


上一篇:Java性能优化技巧之J2EE篇 人气:731
下一篇:Java学习过程的一些重点(二) 人气:665
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐