基于Java的界面布局DSL的设计与实现
日期:2007年9月18日 作者: 查看:[大字体 中字体 小字体]-
Java界面设计应该是一项充满创造性、富有乐趣的工作,但是却往往被认为非常的枯燥和繁琐。究其原因,是因为界面布局领域所采用的描述概念和具体的实现语言之间存在很大的语义隔阂。而一般的界面开发工具提供的所见即所得以及界面布局管理器等方案也无法很好地解决这个问题。
在本文中,我们会给出一种更好的解决方案,我们不是去试图把界面设计者头脑中的设计概念和样式逐步降级、分解成所使用的实现语言能够理解的低层概念,也不是提供一些已经完成的、确定的但难以扩充和更改的布局样式库供界面设计者使用。我们所提供的是一种专门用于描述高层界面设计样式的语言。通过这种语言,界面设计者可以直接、明确地描述出他们头脑中的布局设计样式;通过这种语言,界面设计者可以自己方便地、灵活地制定自己需要的布局样式。此外,本文中给出的设计思想对于其他领域的设计也有很好的借鉴作用。
创造性,还是乏味?
界面设计是一项非常有创造性,甚至富有艺术性的工作,一个简洁、易用、漂亮的界面在带给使用者方便的同时,也会给界面设计者带来极大的成就感。但是,在现实中,情况似乎并非如此,很多人都认为做界面是一项非常繁琐、机械、乏味的工作,并千方百计地去逃避界面相关的工作。这是为什么呢?
原因很简单,因为做界面其实涉及两项工作,一项是界面的一些设计创意,包括界面的布局样式以及和使用者的交互方式,这项工作充满挑战和乐趣。但是,这些设计创意最终是要落实到实现上的,这就是第二项工作。此时,你头脑中那些清晰、完整的设计概念开始变得琐碎,你不得不和那些低层次的坐标位置打交道。更糟糕的是,当你好不容易做好了一个界面,但是发现其中某些元素的布局需要一些调整时,这个你本应认为是一个很简单的改变却造成大量重复的低层次坐标位置更改时,你肯定会认为做界面是多么的机械和乏味呀!
其实,造成这种认识的根源在于界面设计创意和实现这些创意概念的语言之间存在很大的断层。这样,在具体实现时,你就必须得把这些清晰、完整的布局样式降级成一些琐碎、没有什么意义的低层次的坐标值,使得实现语言能够理解。这项工作不仅乏味,而且最终的实现也非常的脆弱 —— 一个在布局样式层面非常简单的更改,就会造成实现层面的巨大变动。比如:我们可以说把一组元素同时按比例缩小 10%,做过界面的朋友肯定知道这个更改意味着什么。
为了应对这个断层的问题,目前几乎所有的涉及界面制作的开发工具都提供了相同的解决方法:可视化的界面设计工具以及布局管理器。但是这两种方法都没有从根本上解决这个问题。
可视化界面设计工具确实避免了不少繁琐的界面元素摆放工作,但是对于专业的界面设计来说,通过拖放设计出来的界面在准确度和规范性上都有待提高,此外还有更为重要的一点,那就是存在于设计者头脑中的布局样式仍然没有被明确地描述出来,而是被降级成一个个摆放在一起的零散的组件,虽然这些组件本身是可视的。这个语义断层的存在同样会使得通过可视化界面设计工具设计出来的界面非常脆弱。
布局管理器试图通过提供一些常用的布局样式来解决这个问题。但是,这种做法非常僵化,也就是说你只能使用现有的布局管理器,如果它们无法满足你的要求,你也无法自己定制。此外,这些布局管理器仅仅适合于一些简单的情况。对于一些复杂的布局样式来说,它们的描述能力就显得非常的不足。那些曾经和 GridBagLayOut 斗争过的朋友对此肯定深有体会。
在本文中,我们会给出一种更好的解决方案,我们不是去试图把界面设计者头脑中的设计概念和样式逐步降级、分解成所使用的实现语言能够理解的低层概念,也不是提供一些已经完成的、确定的但难以扩充和更改的布局样式库供界面设计者使用。我们所提供的是一种专门用于描述高层界面设计样式的语言。通过这种语言,界面设计者可以直接、明确地描述出他们头脑中的布局设计样式,通过这种语言,界面设计者可以自己方便地、灵活地制定自己需要的布局样式。也就是说,本来仅存在于界面设计者头脑中的抽象布局样式,现在也变得可描述,可编程了。
界面布局语言介绍
在学习界面布局语言的设计之前,先来了解一下该语言的使用是非常有帮助的。我们的界面布局语言非常简单,简单到只有一种原子:Component。Component 是一种基本的布局元素,可以对 Component 进行平移和伸缩,使其和给定的一个布局空间 Rectangle 匹配。比如对于 Button 这个 Component 来讲,它具有传统按钮的外观,但是它在布局上所占的实际空间则是由为其指定的 Rectangle 决定的。此外,Component 要最终在界面上显示出来,就必须有一个物理上的 Container。也就是说,界面设计应该是一项充满创造性、富有乐趣的工作,但是却往往被认为非常的枯燥和繁琐。究其原因,是因为界面布局领域所采用的描述概念和具体的实现语言之间存在很大的语义隔阂。而一般的界面开发工具提供的所见即所得以及界面布局管理器等方案也无法很好地解决这个问题。 - [1] [2] [3] [4] [5] [6] [7] [8] 下一页
-
- 基于Java的界面布局DSL的设计与实现 相关文章:
- ·XML Schema定义元素的基本知识
- ·卡巴斯基12月10日——16日一周病毒报告
- ·Vista12个最实用操作技巧的基础课
- ·卡巴斯基报告称恶意软件近三成来自中国
- ·HTML基础:HTML的基本结构
- ·基本的页面设计元素布局比例
- ·卡巴斯基发布8.0版最新特性(附下载)
- ·网站的文章内容SEO优化基本原则
- ·卡巴斯基® 手机版正式线上发行
- ·Java基础:你是否了解KVM的常量池
- 基于Java的界面布局DSL的设计与实现 相关软件
- ·《时空之泪》基因主城音乐
- ·《反恐导弹基地》V1.8动作射击试玩
- ·《基因传奇》
- ·文物典藏系列-英国大维德基金会藏中国珍品瓷器
- ·FC《飞鼠洛基冒险记》模拟器
- ·手机游戏:维基范斯代号-普罗米修斯(汉化版)
- ·何绍基书咏落花七律十五章
- ·《罗科索夫斯基元帅战争回忆录》
- ·《3D Max 动画基础教程》
- ·超频基础知识
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:Flash教程:AS3.0 实现FLASH的“动态链接库”
下一篇:你必须知道的.NET之特性和属性
精品推荐
热点TOP10
- ·JAVA教程 第五讲 AWT图形用户界面设计
- ·SP 短信开发-基础知识篇
- ·使用JAVAMAIL发邮件的一个例子(转)
- ·J2ME蓝牙程序开发实战入门
- ·用Java实现音频播放
- ·使用SimpleDateFormat必须注意的问题
- ·Sun:JavaFX Mobile和JavaFX Script
- ·Java EE6提案的两大主题:拓展性和概要
- ·Java会因为RoR的流行而过时吗?
- ·Java资料:Swing中的事件处理详细资料
- ·Java知识:Web应用下实现定时任务简便方法
- ·技巧:Java中用动态代理类实现记忆功能
- ·新手入门:写Java程序的三十个基本规则
- ·入门:Java初学者入门要注意的基础知识
- ·Java SE 6中XML数字签名标准Java接口
- ·JForum 2.1.7 源程序编译草记
- ·Spring中的Template和Callback模式
- ·从集合类的升级联想到Java适配器模式
- ·I18N-国际化消息和日志
- ·通过JDMK 进行遗留系统管理
特别推荐
- ·Java精华积累:初学者都应该搞懂的问题
- ·Java多媒体框架设计自动播放机实例详解
- ·如何有效防止Java程序源码被人偷窥?
- ·Cell插件在J2EE系统中的应用
- ·初学者想学Hibernate,初级基础教程
- ·Java语言实现支持视频点播的WEB服务器
- ·关于Java编程的中文问题的几条分析原则
- ·确保J2ME无线移动商业应用程序的安全性
- ·Java开源技术:Eclipse的使用技巧详解
- ·新手入门:Java中的修饰词使用方法总结
- ·JAVA开发者应该去的20个英文网站
- ·使用JDBC创建数据库访问程序
- ·JDK的命令详解
- ·Java学习从入门到精通(附FAQ)
- ·Tomcat性能调整
- ·JSF:Java中面向Web开发的生旦净末丑
- ·对Java语言入门初学者的一些建议
- ·Java技术的新方向
- ·Jive源代码研究
- ·谨慎使用Date和Time类
