Java中轻松实现界面跳转(2)
为了优化这种情形,彻底解决这个问题,我想应该设计一个第三方类来消除这种依赖性,并且让界面跳转不要这么费劲。这个第三方的类是这样设计的:
在这个类中,必须有一个变量来保存某一个界面跳转的路径,如A->B->C.路径一旦被保存,你就拥有了控制显示任何一个界面的权利了。在这个链中,第一个位置的界面应该是这次跳转的第一站,最后一个位置是当前站。这里存在一个因果关系:只有跳转了才可以跳回去。这样使得我们可以用数组来保存这个路径。现实中,跳转的情形应该不会超过10次,所以我们把路径长度设为10(当然你可以根据需要更改)。这个类的样子大概象这样:
class ViewPath{
JPanel[] pnlPath = null; //跳转的界面路径,界面跳转最大10个层次吧!!!
int index = 0; //路径中的当前下标
BaseView bsView = null; //当前路径所在的同一个View
//在路径中寻找目标的方法
public int find(JPanel pnl){ //该路径下是否有某个Panel,有的话返回下标,没有的话返回-1
if(bsView==null) return -1; //没有初始化,该路径下没有任何Panel
for(int i=0;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类型.用户根据自己的需要去实现这些方法,岂不妙哉!
- 上一篇:Java语言接口与继承的本质
- 下一篇:基于Java的解释器设计模式[图]