快速业务通道

使用 Eclipse 插件开发环境构建模板 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
的同一个View   //在路径中寻找目标的方法   public int find(JPanel pnl){ //该路径下是否有某个Panel,有的话返回下标,没有的话返回-1   if(bsView==null) return -1; //没有初始化,该路径下没有任何Panel   for(int i=0;i<pnlPath.length;i++){ //在这个路径中寻找目标    if(pnl==pnlPath[i]){     index = i;     return i; //如果找到了则返回位置,并且把当前位置设为目标位置    }   }   return -1; //没有找到,返回-1 } //构造函数 ViewPath(JPanel myPanel,BaseView myView){   pnlPath = new JPanel[10]; //设置路径最大长度为10   bsView = myView; //设置该路径所属的那个View   pnlPath[0] = myPanel; //设立起始站   index = 0; //设立起始站索引 } }

这样一个类就完成了保存一次跳转路径的作用.(当然,是否应该在find方法中设立目标位置是否合适有待商榷)

那么我们如何使用这样一个路径?

我们设立一个辅助类来完成这个工作,我们命名为ViewJump,我们知道作为辅助的类最好是不要有实例,特别是象这样的起接口作用的类,只提供静态方法.它的框架象这样:

public class ViewJump{   private static ViewPath[] viewPath = null; //路径池,系统多处使用,静态但私有,因为供内部用   private ViewJump(){} //私有构造方法,辅助类只提供静态方法   private static int find(JPanel pnl); //寻找给定的Panel是否在已有路径中,私有   private static int newPath(JPanel myPanel,BaseView myView); //建立一个新路径,私有   /**   * 每个类需要使用该辅助类时都需要第一步注册自己,然后才能做其他操作   * 返回一个注册码id,辅助类需要使用这个注册码进行其他操作   */   public static int registerPath(JPanel myPanel,BaseView myView);   /**   * 设立下一个界面.   */   public static void setNext(int id,JPanel aim);   /**   * 回到上一个界面   */   public static void back(int id);   /**   * 回到第一个界面   */   public static void backHome(int id);   /**   * 跳转到下一个界面   */   public static void jump(int id); }

完成这样一个类的代码量并不多,一百多行,但是却使得用户完全脱离了处理不同界面的烦恼.稍后会把该类的源码附上,值得一提的是,这个类的实现固然可以用到类似的实现当中,但是如果用户的界面结构并不是如此搭建,你就需要更改参数类型了.如果能把这些抽象出来,得到一个抽象类或接口,参数用Object类型.用户根据自己的需要去实现这些方法,岂不妙哉!

使用这个类,你可以简便的多的完成诸如上面的任务:

OneView中:

public void jump(){   MyView myView = new MyView();   int id = ViewJump.registerPath(this.xxPanel,this);   ViewJump.setNext(id,myView.getPanel());   ViewJump.jump(id); }

MyView中退回的部分:

protected void goBack(){   int id = ViewJump.registerPath(this.myPanel,this);   ViewJump.back(id); }

在Java中轻松实现界面跳转(3)

时间:2010-12-05

天哪,这并不神奇,600行代码仅仅用了两行就实现了!

好了,我就说这么多了,一切都掌握在你手中,用你的智慧来优化我们的冗余代码吧,因为这样它看起来相当不错.

附:完整代码:(我把ViewPath类放在同一个文件ViewJump.java里,代码上面已经给出)

public class ViewJump{   private static ViewPath[] viewPath = null;   //私有构造函数   private ViewJump(){}   //寻找该Panel是不是在路径中   /**   * 找到了返回在实例数组中的下标   * 没有找到返回-1   * @param pnl   * @return   */   private static int find(JPanel pnl){    /

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号