先对JAR作一下简要介绍JAR是一种与平台无关的文档格式全称为Java Archive翻译成中文叫Java 归档咋一看它相当于一种压缩格式可以把众多的文档合成一个文件就象ZIPACE等但它所被赋予的能力远不止这些 首先它与平台无关并且兼容性好就是说不管是windows还是unix都是通吃甚至是IE和netscape之间的不兼容也能轻松化解这和java的精神是很相符合的 再来它使用户可将多个java小应用程序合并为一个文件作为单个的简单 HTTP事务下载到浏览器中从而大大提高浏览速度这在越来越讲究速度的www世界里是很相当具有诱惑力的 它还提供对applet作者的认证这只要对JAR进行数字签名便可 更为精彩的是如果浏览器信任该认证那么作为可信任的applet它便能访问非信任的applet禁止访问的资源如本地硬盘和网络 还有一个不似功能的优点背靠sun自然是好事天天有 总而言之是优点多多前途无量从它的诞生开始它就在java的应用中的占着越来越重要的地位不久JAR将成为分布java applet的标准方法 这么好的东东是不是有些相见恨晚那现在便开始为JAR的进阶准备一些工具当然必要的是jdk现在普遍用的版本是那么就去下一个吧sun的主机太远速度也一般般关键是e文的目录又深国内有些网站也提供下载的速度也挺快在搜索引擎里面查找一下便有一堆了最好是准备一个可视化的java编程环境在windows平台下推荐jbuilderInprise也就borland公司出的除开资源占得厉害有些垃圾代码也挺不错的至于jbuilder的下载也还是去搜索一下吧还有要对jbuilder熟悉一下里面有jbuilder书籍下载有兴趣就去下一个看看挺不错的 现在开始JAR的第一步jdk提供了jar的工具就在java所在目录的bin目录下有一个jarexe的应用程序可以试着新建一个jar文件 jar cvf testjar *class image c参数表示在标准输出上创建新归档或空归档 v参数表示把添加了一些什么的信息在标准输出上显示 f 参数在这里表示用什么样的jar文件名 在jbuilder里面新建一个JAR更加方便wizards菜单的archive builder一步步往下选就可以了 为了更好的钻研JAR就从在jbuilder做个applet开始吧做这样一个东西在一个面板上有一个按钮右键单击按钮将弹出一个菜单 新建一个工程testjpr 再新建一个applet appletJava 接下来在面板上摆上一个javaawtbutton 再摆上一个javaawtpopupMenu在popupMenu的编辑面板输入几个选项 这样控件摆完了接下来是写相应的事件源程序如下 package test; import javaawt*; import javaawtevent*; import javaapplet*; public class Applet extends Applet { boolean isStandalone = false; PopupMenu popupMenu = new PopupMenu(); MenuItem menuItem = new MenuItem(); MenuItem menuItem = new MenuItem(); MenuItem menuItem = new MenuItem(); Button button = new Button(); /**Get a parameter value*/ public String getParameter(String key String def) { return isStandalone ? SystemgetProperty(key def) : (getParameter(key) != null ? getParameter(key) : def); } /**Construct the applet*/ public Applet() { } /**Initialize the applet*/ public void init() { try { jbInit(); } catch(Exception e) { eprintStackTrace(); } } /**Component initialization*/ private void jbInit() throws Exception { menuItemsetLabel(); menuItemsetLabel(); menuItemsetLabel(); buttonsetLabel(button); file://这是button的监听事件 buttonaddMouseListener(new javaawteventMouseAdapter() { public void mousePressed(MouseEvent e) { button_mousePressed(e); } }); popupMenuadd(menuItem); popupMenuadd(menuItem); popupMenuadd(menuItem); thisadd(button null); add(popupMenu); } /**Get Applet information*/ public String getAppletInfo() { return Applet Information; } /**Get parameter info*/ public String[][] getParameterInfo() { return null; } void button_mousePressed(MouseEvent e) { /*通过InputEventBUTTON_MASK对右键的判断 要判断是左键用InputEventBUTTON_MASK */ int mods=egetModifiers(); if((mods&InputEventBUTTON_MASK)!=) { popupMenushow(buttonegetX()egetY()); button } } } file://appletjava is over 运行一下确实可以看到右键弹出了相应的菜单 我们现在可以打包并发布了 选择wizards菜单的archive builder或者通过new 的archive builder来可视化的创建一个包含这个applet的JAR文件 需要注意的几点是 archive type 选applet这个选项并不重要只是相当于通知一下接下来做的是一个applet的JAR文件包 project class and resources选include required class and known resources 这句理解为待会儿生成的JAR文件包中包含被调用的类文件和需要使用到资源文件 required classes and resources 需添加test的applet新建的JAR文件包默认情况下并不包含所应用到的applet的class文件需要在这里进行添加有多少要用到的applet就应该在这里都添加进去 完成后会发现多出来一个applet的图标在build后会在其下面多出来一个testjar在JAR的属性栏里是一样可以添加和删除applet的class文件的只是记得每次重新编译了class文件后都要rebuild这个JAR文件这是为了让JAR文件中的class也得到及时更新 双击testjar会发现有两个class文件Appletclass和Applet$class后者是用来存放鼠标监听右键点击事件的中间代码的 现在只是需要把它发布到浏览器上就可以了 在test目录下新建l文件内容很简单 <APPLET code=testAppletclass archive=testjar></APPLET> 相比之下要选择发布这样的class文件就必须把Appletclass和Applet$classl两个文件同时放到一个目录下面两个文件还可以这样照顾的了但一旦class文件数量增多了就会难免会出现个别文件丢失的情况使applet的应用产生错误 打包成JAR也使整个applet成为一个事务就可以下载过来因此也减少了网络开销加快了下载的速度由此可见JAR文件格式的出现确实让applet的应用进入了一个新的可持续发展的阶段 从上一篇看到的JAR的基本用法似乎并没让人有感觉到JAR的出现是给applet的应用带来了一个新的开始但您也许看完了下面的就会对JAR稍有认同了 很多试着在jbuilder里做过applet的java爱好者都知道applet的界面布局是一个比较繁人的问题远不是如VB里面把控件放到界面上那么简单就算是用最高级的grid bag布局管理器要在上面摆多个控件也是需要调整又调整的而且就算是在jbuilder里面还看得可以接受但换到浏览器里面也许又是另一个样子了当然也有摆得好的当毕竟是需要时间和经验的可是在jbuilder里面如果对底板不选grid bag布局管理器而选XY布局那在上面摆控件就真的是一件很轻松的事情了令人遗憾的是XY布局所调用的类是comborlandjbcllayout下面的是由borland公司自己编写的很显然这样编写的applet是轻松了编写痛苦了应用因为实在是无法让仅仅认得jdk的IE去认识borland写的类那么就真的只有写给自己看了吗现在有了JAR你会发现如按下面的步骤来是可以很轻松的让别人也看到你写的包含非jdk标准类的applet 我们在第一步写的那界面上再添加几个按钮先把底板的布局由grid bag改变成xy再在上面添加几个按钮把按钮的右击事件也设置为弹出菜单以下是源程序在jbuilder生成的代码上简化一下去掉暂可不用的代码和一些注释但保证可以正常运行 package test; import javaawt*; import javaawtevent*; import javaapplet*; import comborlandjbcllayout*; public class Applet extends Applet { boolean isStandalone = false; PopupMenu popupMenu = new PopupMenu(); MenuItem menuItem = new MenuItem(); MenuItem menuItem = new MenuItem(); MenuItem menuItem = new MenuItem(); Button button = new Button(); XYLayout xYLayout = new XYLayout();/*面板改变为XYLayout布局使用的是非jdk标准类*/ Button button = new Button(); Button button = new Button();/*添加三个按钮*/ public void init() { menuItemsetLabel(); menuItemsetLabel(); menuItemsetLabel(); buttonsetLabel(button); buttonaddMouseListener(new javaawteventMouseAdapter() { public void mousePressed(MouseEve |