扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
描述为:
一个界面就是一个BaseView,他只包含一个JPanel,这个包含JPanel包含所有我们的Swing控件,例如JButton,JLable等等。
问题出现了:我们通常因为业务的需要完成一个界面的操作要自动跳转到下一个界面,完成下一个界面又能跳回来(题外话:由于我们的操作是基于GUI的,所以往往能保存Session信息,而Web却做不到),而这往往成为系统实现过程中效率低下的一个因素,我就见到我现在的系统中有人用600行代码判断上一个界面应该是哪一个来跳转过来,因为很多界面都可以跳到当前界面。
当然有一种做法是,在下一个界面类中包含指向上一个界面的变量,我们说,这不方便,也增加了依赖性,这对软件是不利的。
接下来,我给出我的解决方法,希望对采用这种界面结构的朋友有所裨益。
(以下全部用简化模型来讲述.)
1.简单点,我们假设BaseView继承JWindow,当然可以是别的容器(依据你的实现),大概象这样:
public abstract class BaseView extends JWindow{ ... |
}
2.每个界面类都象这样定义:
public class MyView extends BaseView{ JPanel myPanel; public void playoutPanel(){ JButton myButton = new JButton("OK"); myPanel.add(myButton); ...... (添加你需要的控件和布局到myPanel上) } } |
原来臃肿的代码需要在myView中添加一个变量BaseView anyView;用来存放转来的那个界面anyView,赋值在三者中的跳转代码中引用myView来设定.跳转代码象这样:
public void jump(){ MyView myView = new MyView(); myView.anyView = this; this.remove(this.xxPanel); this.add(myView.getPanel()); this.repaint(); } |
大概象这样:(这已经是被我简化的)
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者