选择显示字体大小

jar进阶(下)


  从上一篇看到的jar的基本用法,似乎并没让人有感觉到jar的出现是给applet的应用带来了一个新的开始。但您也许看完了下面的,就会对jar稍有认同了。

  很多试着在jbuilder里做过appletjava爱好者都知道,applet的界面布局是一个比较繁人的问题,远不是如vb里面把控件放到界面上那么简单,就算是用最"高级"的grid bag布局管理器,要在上面摆多个控件也是需要调整又调整的,而且就算是在jbuilder里面还看得可以接受,但换到浏览器里面也许又是另一个样子了,当然也有摆得好的,当毕竟是需要时间和经验的,可是在jbuilder里面如果对底板不选grid bag布局管理器,而选xy布局,那在上面摆控件就真的是一件很轻松的事情了,令人遗憾的是xy布局所调用的类是com.borland.jbcl.layout下面的,是由borland公司自己编写的,很显然这样编写的applet是轻松了编写,痛苦了应用,因为实在是无法让仅仅认得jdk1.0的ie去认识borland写的类,那么就真的只有写给自己看了吗,现在有了jar,你会发现如按下面的步骤来,是可以很轻松的让别人也看到你写的包含非jdk标准类的applet

  我们在第一步写的那界面上再添加几个按钮,先把底板的布局由grid bag改变成xy,再在上面添加几个按钮,把按钮的右击事件也设置为弹出菜单,以下是源程序,在jbuilder生成的代码上简化一下,去掉暂可不用的代码和一些注释,但保证可以正常运行,

package test1;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import com.borland.jbcl.layout.*;

public class applet1 extends applet {
boolean isstandalone = false;
popupmenu popupmenu1 = new popupmenu();
menuitem menuitem1 = new menuitem();
menuitem menuitem2 = new menuitem();
menuitem menuitem3 = new menuitem();
button button1 = new button();
xylayout xylayout1 = new xylayout();/*面板改变为xylayout布局,使用的是非jdk标准类*/
button button2 = new button();
button button3 = new button();/*添加三个按钮*/
public void init() {
menuitem1.setlabel("1");
menuitem2.setlabel("2");
menuitem3.setlabel("3");
button1.setlabel("button1");
button1.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(mouseevent e) {
button1_mousepressed(e);
}
});
this.setlayout(xylayout1);
button2.setlabel("button2");
button2.addmouselistener(new java.awt.event.mouseadapter() {
public void mousepressed(mouseevent e) {
button1_mousepressed(e);
}
});
button3.setlabel("button3");
button3.addmouselistener(new java.awt.event.mouseadapter() {/*三个按钮的右键事件都为一个*/
public void mousepressed(mouseevent e) {
button1_mousepressed(e);
}
});
popupmenu1.add(menuitem1);
popupmenu1.add(menuitem2);
popupmenu1.add(menuitem3);
this.add(button1, new xyconstraints(155, 5, -1, -1));
add(popupmenu1);
this.add(button2, new xyconstraints(49, 94, 101, 32));
this.add(button3, new xyconstraints(235, 92, 98, 36));
}
void button1_mousepressed(mouseevent e) {
int mods=e.getmodifiers();
if((mods&inputevent.button3_mask)!=0)
{
popupmenu1.show(button1,e.getx(),e.gety());
}
}
}

  通过在jbuilder的预览中可以看到,三个按钮未改动位置,而且右键单击也按要求在一个按钮上出现。很可惜的是这样的applet无法发布出来,我们试着打开class目录下的applet1.html,ie报出一个出错信息:"load:test1.applet1 cant't be instantiated"。原因就是ie并不认识com.borland.jbcl.layout下面的类,而这里使用了xylayout。.那么我们开始制作包含该xylayout类的jar来发布该applet

  还是通过new一个 archive builder开始,

  archive type : applet

  project classes and resources : include required classes and known resources

  required classes and resources : add test1.applet1.class

  再点击next,就到了关键的一步,显示的jbcl和dataexpress都是applet所需要调用到的类,而且都是非jdk标准的,可以通过在这里选择后也包含到这个jar文件中,供applet调用,默认的设定是include required classes and all resources,即把applet所需要调用的类包含到jar中,并且还包括这个类所中所包含的所有资源,而不管applet是否会用到。所以我们一般情况下只需要选择include required classes and known resources,资源文件要尽量少的包含到jar中,以避免jar文件过于庞大。记住是要让jbcl和dataexpress都选择为include deps。这样便很轻松的完成了相关类的添加工作。

  完成后可以在test1.jpr的目录数下找到applet,builder它得到的test1.jar目录数中可以看到多出了com.borland.jbcl.layout这样的目录,在这个目录下包含着xylayout.class和xyconstraints.class两个类文件,这就是这个applet所需要调用的非标准类了,还是要记住,每当重新编译了这个applet,都要再编译一次jar,这样才能让新生成的applet文件包含到jar中。

  接下来就只需要在有test1.jar这个文件的目录里面新建一个文件testjar.html :

  <applet code=test1.applet1.class archive="test1.jar" width=350 height=200 > </applet

  需要提醒的是,如果在ie里面浏览该html,如果有过重新编译jar并要把变化反应到网页上来,又没有关闭先前开的浏览该html的ie窗口,就要在地址栏里面按ctrl+f5来刷新该html

  可以看到这样的应用真的给applet赋予了更强大的生命力,而且在jbuilder里面很容易的就实现了它。但是就applet的应用来讲,还是有个悬而未决的问题,很多朋友都知道,在applet里面不能添加进swing类,因为ie只是支持jdk1.0,而swing类是以 jdk1.1 轻型用户界面框架为基础的,不在ie的支持范围,那么自然也不能正常显示,现在问题是也不能用jbuilder的archive builder来把applet所需要调用的swing类包含到jar中。

  但也不是没有办法,一个较为简单的办法是装jre(java runtime environment ),但是这个办法的缺点是要让每一个要浏览该applet的机器都要安装jre。另一个办法是重新复制编译一次swing类,生成自己的类,这样就可以被jar打包时所包含到了,当然这需要的较多的时间和精力,这里举一个较为简单的例子,如果在applet里使用jbutton,那么先把jdk里面一个src.jar这个文件解压,再在目录javax,swing下,找到jbutton.java文件,查看它的源码,并把所有涉及到的swing类都复制到一个目录下,改变每一个文件的package属性。再编译,通过了就说明找到的文件全了,没有通过就必须再找到,直到不再编译出错为止。最后从applet引用这个已经编译的class,而不再用swing。好像这个办法是笨了点,但对大家熟悉java是很有帮助的。

  差不多jar的用法可以说掌握到这样就可以了,当然还有更精彩的应用,如与数字签名结合可以突破以往对applet的限制,甚至可以访问本地硬盘,网络等等。如果大家对此感兴趣,我也会在稍后的文章中对数字签名和jar的结合跟大家作一个较为详尽的探讨。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons