快速业务通道

基于Java的界面布局DSL设计与实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
, float hRatio, float vRatio) {    Component[] ncps = new Component[cps.length];    for(int i=0; i<cps.length; i++) {      ncps[i] = center(cps[i], hRatio, vRatio); } return block(ncps, N, M); }

基于Java的界面布局DSL设计与实现(5)

时间:2011-03-07 IBM 孙鸣 邓辉

好了,现在我们来看一个稍微复杂一些的例子,我们将使用前面制作的一些布局样式构建一个迷你计算器的外观,如下图所示:

图 9. 迷你计算器

基于Java的界面布局DSL设计与实现 - 编程入门网

对应的描述代码如下:

Component[] cs = new Component[]{    Button().title("0"),    Button().title("1"),    Button().title("2"),    Button().title("+"),    Button().title("3"),    Button().title("4"),    Button().title("5"),    Button().title("-"),    Button().title("6"),    Button().title("7"),    Button().title("8"),    Button().title("*"),    Button().title("9"),    Button().title("="),    Button().title("%"),    Button().title("/")  }; Component opLayout = block(cs,4,4); above( above( TextField(),    beside( Button().title("Backspace"),      Button().title("C"),0.5),      0.5),      block(cs,4,4), 0.3).at(0,0,300,200).in(C);

如果我们现在希望将所有数字以及操作按钮按照横向和纵向各 2% 进行留白,我们所要做的仅仅是一行的改动,就是把:

Component opLayout = block(cs,4,4);

更改为:

Component opLayout = block_with_margin(cs, 4, 4, 0.02, 0.02);

执行结果如下图所示:

图 10. 数字以及操作按钮按照横向和纵向各 2% 进行留白

基于Java的界面布局DSL设计与实现 - 编程入门网

这意味着什么呢?这意味着我们可以直接使用布局语言进行界面制作,我们可以直接针对布局进行编程,我们所写出来的界面代码就是我们的布局规格说明。

从上面的介绍中,读者可以看出,我们的界面布局语言可以非常方便地定义出一些常见的布局样式,还可以把这些样式组合成更为复杂的一些高阶布局样式,并且这种组合是没有任何限制的。此外,这些布局样式的定义描述方式是和界面设计者头脑中所使用的一些布局词汇和规则贴近的。通过使用界面布局语言,界面设计者完全可以摆脱那些呆板、机械又难以定制和扩展的布局管理器,可以轻松地把头脑中的布局创意直接描述出来,逐步形成自己的布局样式库,充分享受这种创造性的工作所带来的乐趣。

基于Java的界面布局DSL设计与实现(6)

时间:2011-03-07 IBM 孙鸣 邓辉

界面布局语言设计与实现

在本小节中,我们会对上面介绍的界面布局语言的一些设计和实现细节进行介绍。我们这里所讲解的是基于 Java Swing 的实现。读者可以根据自己的需要在其他的语言和界面开发工具包上去实现该界面布局语言。

界面布局语言的主要设计思路有两点:

在接口中遵循《Domain Driven Desing》作者 Eric Evans 提出的 FluentInterface 的概念;

语言的层次化设计。

界面布局语言所提供的接口不是 Java 语言层面上的对象接口,也不是使用基于 Java 的语法来使用这些接口构建复杂的界面。相反,我们提供了一个面向界面设计规格描述的接口,接口的语义、规则以及命名完全和界面设计中的规则、概念相符,这样就可以直接使用代码来清晰、直接地表达出界面设计中的布局概念。

在界面布局语言的设计上,我们没有采用定制的面向对象的设计,而是由一组处于不同层次的语言组成,每个层次都是通过对该层的基本原子进行组合构

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号