基于Java的界面策划DSL筹划与实现[Java编程]
本文“基于Java的界面策划DSL筹划与实现[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
界面计划应当是一项充满创造性、富有爱好的工作,但是却常常被认为非常的单调和烦琐.究其缘由,是因为界面筹划范畴所采取的描写概念和具体的实现语言之间存在很大的语义隔阂.而普通的界面开辟工具供应的所见即所得以及界面筹划管理器等筹划也无法很好地办理这个问题.
在本文中,我们会给出一种更好的办理筹划,我们不是去试图把界面计划者头脑中的计划概念和款式渐渐降级、分化成所利用的实现语言可以理解的低层概念,也不是供应一些已经完成的、肯定的但难以扩大和更改的筹划款式库供界面计划者利用.我们所供应的是一种专门用于描写高层界面计划款式的语言.通过这种语言,界面计划者可以直接、明确地描写出他们头脑中的筹划计划款式;通过这种语言,界面计划者可以自己便利地、机动地拟定自己需求的筹划款式.此外,本文中给出的计划思惟关于其他范畴的计划也有很好的鉴戒作用.
创造性,还是乏味?
界面计划是一项非常有创造性,乃至富有艺术性的工作,一个简便、易用、漂亮的界面在带给利用者便利的同时,也会给界面计划者带来极大的成就感.但是,在实际中,情形仿佛并非如此,很多人都认为做界面是一项非常烦琐、机械、乏味的工作,并千方百计地去躲避界面相关的工作.这是为什么呢?
缘由很简单,因为做界面其实触及两项工作,一项是界面的一些计划创意,包含界面的筹划款式以及和利用者的交互方法,这项工作充满挑衅和爱好.但是,这些计划创意终究是要落实到实现上的,这就是第二项工作.此时,你头脑中那些清楚、完好的计划概念开始变得琐碎,你不得不和那些低层次的坐标位置打交道.更糟糕的是,当你好不简单做好了一个界面,但是发现此中某些元素的筹划需求一些调整时,这个你本应认为是一个很简单的改变却造成大量反复的低层次坐标位置更改时,你必定会认为做界面是多么的机械和乏味呀!
其实,造成这种熟习的本源在于界面计划创意和实现这些创意概念的语言之间存在很大的断层.这样,在具体实现时,你就必须得把这些清楚、完好的筹划款式降级成一些琐碎、没有什么意义的低层次的坐标值,使得实现语言可以理解.这项工作不但乏味,并且终究的实现也非常的脆弱 —— 一个在筹划款式层面非常简单的更改,就会造成实现层面的宏大变更.比方:我们可以说把一组元素同时按比例缩小 10%,做过界面的朋友必定知道这个更改意味着什么.
为了应对这个断层的问题,目前几近全部的触及界面制作的开辟工具都供应了相同的办理办法:可视化的界面计划工具以及筹划管理器.但是这两种办法都没有从根本上办理这个问题.
可视化界面计划工具确切避免了不少烦琐的界面元素摆放工作,但是关于专业的界面计划来说,通过拖放计划出来的界面在精确度和标准性上都有待提高,此外还有更为重要的一点,那就是存在于计划者头脑中的筹划款式仍旧没有被明确地描写出来,而是被降级成一个个摆放在一同的零星的组件,固然这些组件本身是可视的.这个语义断层的存在一样会使得通过可视化界面计划工具计划出来的界面非常脆弱.
筹划管理器试图通过供应一些常用的筹划款式来办理这个问题.但是,这种做法非常僵化,也就是说你只能利用现有的筹划管理器,假如它们无法满意你的要求,你也无法自己定制.此外,这些筹划管理器仅仅合适于一些简单的情形.关于一些复杂的筹划款式来说,它们的描写本领就显得非常的不足.那些曾经和 GridBagLayOut 斗争过的朋友对此必定深有领会.
在本文中,我们会给出一种更好的办理筹划,我们不是去试图把界面计划者头脑中的计划概念和款式渐渐降级、分化成所利用的实现语言可以理解的低层概念,也不是供应一些已经完成的、肯定的但难以扩大和更改的筹划款式库供界面计划者利用.我们所供应的是一种专门用于描写高层界面计划款式的语言.通过这种语言,界面计划者可以直接、明确地描写出他们头脑中的筹划计划款式,通过这种语言,界面计划者可以自己便利地、机动地拟定自己需求的筹划款式.也就是说,本来仅存在于界面计划者头脑中的抽象筹划款式,目前也变得可描写,可编程了.
界面筹划语言介绍
在学习界面筹划语言的计划之前,先来理解一下该语言的利用是非常有帮忙的.我们的界面筹划语言非常简单,简单到只有一种原子:Component.Component 是一种基本的筹划元素,可以对 Component 举行平移和伸缩,使其和给定的一个筹划空间 Rectangle 匹配.比方关于 Button 这个 Component 来说,它具有传统按钮的外观,但是它在筹划上所占的实际空间则是由为其指定的 Rectangle 决意的.此外,Component 要终究在界面上显示出来,就必须有一个物理上的 Container.也就是说,只要给定了一个 Rectangle 和一个 Container,一个 Component 便可以在界面上指定的筹划位置显现出来.
比方,当我们利用筹划语言在一个 JFrame 上坐标位置为 (0,0) 展示一个 width 为 200,height 为 60 的按钮时,我们可以这样来描写(为了简便起见,背面的代码实例中均略去 Layout 名字空间前缀):
Button().title("button1").at(0,0,200,60).in(this.getContentPane());
其履行后果以下图所示:
图 1. Component 示例
以上是“基于Java的界面策划DSL筹划与实现[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |