龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

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

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
使用这个类,你可以简便的多的完成诸如上面的任务: OneView中: public void jump(){ MyView myView = new MyView(); int id = ViewJump.registerPath(this.xxPanel,this); ViewJump.setNext(i

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

  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);
  }

  天哪,这并不神奇,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){
  // System.out.println("执行find() in ViewJump");
  if(viewPath == null || viewPath.length==0) return -1;
  for(int i = 0;i   ViewPath vp = viewPath[i]; //对该路径检查
   if(vp.find(pnl) != -1){
    return i;
   }
  }
  return -1;
  }

  //建立一个新的路径
  /**
  *
  * @param myPanel
  * @param myView
  */
  private static int newPath(JPanel myPanel,BaseView myView){
  System.out.println("执行newPath() in ViewJump");
  //检验一下看有没有无效的路径,有则清除
  if(viewPath == null || viewPath.length==0) {
   viewPath = new ViewPath[]{new ViewPath(myPanel,myView)};
   return 0;
  }

  ViewPath[] vjArr = new ViewPath[viewPath.length];
  int count = 0;
  for(int i = 0;i   if(viewPath[i].bsView!=null){ //把不为空的值取出来
    vjArr[count++] = viewPath[i];
   }
  }
  viewPath = new ViewPath[count+1];
  System.arraycopy(viewPath,0,vjArr,0,count); //复制到原来的数组变量中
  //最后一个位置留给新加入的元素
  viewPath[count] = new ViewPath(myPanel,myView);
  return count;
  }

精彩图集

赞助商链接