深圳Java培训
达内深圳宝安中心

136-3244-2201

热门课程

【达内JAVA教程】Swing框架中设计模式的误用

  • 时间:2016-06-14
  • 发布:达内
  • 来源:达内

有些java工作人员会在设计Swing框架的过程中常常会犯一些错误,达内JAVA今天要讲的教程课题就针对这类人讲述Swing框架中设计模式的误用,深圳java培训(sz.java.tedu.cn)专家和大家共同学习一下:

Swing控件是改善为了AWT控件而发展出来的轻量级GUI控件,采用的是Composite设计模式,然而,由于没有清楚的分隔组件(Component)和容器(Container)的边界,就造成了Swing的几乎每个单独的组件都是一个容器,能够添加其他容器或者组件,看似强大的功能实际上造成了大量的问题。

【达内JAVA教程】Swing框架中设计模式的误用

1.和人的直觉非常不一致

Swing的GUI上的各种组件如果添加的面板过多的话,就造成各个组件的层次很深,处理类似focus管理这样的问题就很麻烦,坐标的转换也很复杂,由于父子关系过多,您不看代码只看GUI,凭直觉难以区分组件的父子关系。

2.使用上的困扰

Swing组件本身由于不能分清是组件还是容器,很多容器方法比如setEnabled就没有效果,需要写代码遍历所有子组件,调用所有的子组件相同的方法,而类似设置透明的方法也有这个问题,如果设置某个容器透明,也需要设置所有的子组件的透明属性,组件和容器的很多方法没有很好的定义,这对了解Swing结构的人不是问题,但是对于熟悉别的GUI类库的人就产生了很大的困惑,因为不少容器上的方法调用后是没有效果的。

3.布局上的困难

使用Swing开发界面的程序员会发现,即使Swing提供了这么多布局管理器,然而您想通过这些布局管理器做出很专业的界面却非常难,因为布局管理器非常依赖父容器和子组件的各种状态,尽管Swing最新的版本提供了类似组件和容器间隔的方法,然而还没有被大部分布局管理器采用,其实并不是布局管理器不够强大的问题,事实上,很多专业的界面需要从组件级别做出良好的定义,例如getPreferredSize,getMinimumSize,getMaximumSize方法,这些方法的不确定性很强,布局管理器不能过度依赖这些方法;另外,不少Swing组件会根据容器的大小进行绘制,这也造成了很多不确定性,很多人喜欢使用NullLayout,可能就是这个原因,客户需要的是一个稳定的,可预知的界面,如果使用了布局管理器,会发现界面在不同的系统下展示的不同。

而对比不少GUI类库,您会发现他们的定义更为严格,比方javaME LCDUI类库,组件和容器是严格分开的,组件的添加是严格限制的,布局也是定义的非常严格的,没有布局管理器,类似滚动条这些支持都在底层进行了隐藏,真正减少了GUI开发者的负担。

总得来说,对Composite设计模式应该慎用,如果一定要用,一定要良好的定义组件(Component)和容器(Container)的边界,不然很多功能会陷入没有意义的父子遍历例程,增加了复杂性,却没有带来很多好处。

如果你还有这些疑问欢迎咨询深圳java培训(sz.java.tedu.cn)专家。
如果想学习的同学可以参加深圳达内JAVA培训,免费试听,或周末免费参加深圳JAVA培训公 开课程试听,这里有强大的师资阵容,“师者,所以传道授业解惑也”,讲师,是教育的主体,是影响整体办学质量、学员学习质量的重要因素。所以深圳达内 JAVA培训竭尽全力为学员提供最强大的师资力量,让学员接受最好的教育,学习最前沿的技术。掌握一门牛逼闪闪技术,待遇自然不在话下。

上一篇:【达内职场秀】人和人之间的差距怎么就那么大
下一篇:【达内活动】“老学员推荐新学员”活动详情

为什么 Java 是适合 I0T 的语言

编程语言排行榜

【达内职场秀】如何通过面试官去了解企业

【达内JAVA教程】Java与C/C++的区别

选择城市和中心
贵州省

广西省

海南省