java界面:基于Java的界面布局DSL的设计和实现来源: 发布时间:星期日, 2009年3月29日 浏览:0次 评论:0
Java界面设计应该是项充满创造性、富有乐趣工作但是却往往被认为非常枯燥和繁琐究其原因是界面布局领域所采用描述概念和具体实现语言的间存在很大语义隔阂而般界面开发工具提供所见即所得以及界面布局管理器等方案也无法很好地解决这个问题 在本文中我们会给出种更好解决方案我们不是去试图把界面设计者头脑中设计概念和样式逐步降级、分解成所使用实现语言能够理解低层概念也不是提供些已经完成、确定但难以扩充和更改布局样式库供界面设计者使用我们所提供是种专门用于描述高层界面设计样式语言通过这种语言界面设计者可以直接、明确地描述出他们头脑中布局设计样式;通过这种语言界面设计者可以自己方便地、灵活地制定自己需要布局样式此外本文中给出设计思想对于其他领域设计也有很好借鉴作用 创造性还是乏味? 界面设计是项非常有创造性甚至富有艺术性工作个简洁、易用、漂亮界面在带给使用者方便同时也会给界面设计者带来极大成就感但是在现实中情况似乎并非如此很多人都认为做界面是项非常繁琐、机械、乏味工作并千方百计地去逃避界面相关工作这是为什么呢? 原因很简单做界面其实涉及两项工作项是界面些设计创意包括界面布局样式以及和使用者交互方式这项工作充满挑战和乐趣但是这些设计创意最终是要落实到实现上这就是第 2项工作此时你头脑中那些清晰、完整设计概念开始变得琐碎你不得不和那些低层次坐标位置打交道更糟糕是当你好不容易做好了个界面但是发现其中某些元素布局需要些调整时这个你本应认为是个很简单改变却造成大量重复低层次坐标位置更改时你肯定会认为做界面是多么机械和乏味呀! 其实造成这种认识根源在于界面设计创意和实现这些创意概念语言的间存在很大断层这样在具体实现时你就必须得把这些清晰、完整布局样式降级成些琐碎、没有什么意义低层次坐标值使得实现语言能够理解这项工作不仅乏味而且最终实现也非常脆弱 —— 个在布局样式层面非常简单更改就会造成实现层面巨大变动比如:我们可以说把组元素同时按比例缩小 10%做过界面朋友肯定知道这个更改意味着什么 为了应对这个断层问题目前几乎所有涉及界面制作开发工具都提供了相同解决思路方法:可视化界面设计工具以及布局管理器但是这两种思路方法都没有从根本上解决这个问题 可视化界面设计工具确实避免了不少繁琐界面元素摆放工作但是对于专业界面设计来说通过拖放设计出来界面在准确度和规范标准性上都有待提高此外还有更为重要点那就是存在于设计者头脑中布局样式仍然没有被明确地描述出来而是被降级成个个摆放在起零散组件虽然这些组件本身是可视这个语义断层存在同样会使得通过可视化界面设计工具设计出来界面非常脆弱 布局管理器试图通过提供些常用布局样式来解决这个问题但是这种做法非常僵化也就是说你只能使用现有布局管理器如果它们无法满足你要求你也无法自己定制此外这些布局管理器仅仅适合于些简单情况对于些复杂布局样式来说它们描述能力就显得非常不足那些曾经和 GridBagLayOut 斗争过朋友对此肯定深有体会 在本文中我们会给出种更好解决方案我们不是去试图把界面设计者头脑中设计概念和样式逐步降级、分解成所使用实现语言能够理解低层概念也不是提供些已经完成、确定但难以扩充和更改布局样式库供界面设计者使用我们所提供是种专门用于描述高层界面设计样式语言通过这种语言界面设计者可以直接、明确地描述出他们头脑中布局设计样式通过这种语言界面设计者可以自己方便地、灵活地制定自己需要布局样式也就是说本来仅存在于界面设计者头脑中抽象布局样式现在也变得可描述可编程了 界面布局语言介绍 在学习界面布局语言设计的前先来了解下该语言使用是非常有帮助我们界面布局语言非常简单简单到只有种原子:ComponentComponent 是种基本布局元素可以对 Component 进行平移和伸缩使其和给定个布局空间 Rectangle 匹配比如对于 Button 这个 Component 来讲它具有传统按钮外观但是它在布局上所占实际空间则是由为其指定 Rectangle 决定此外Component 要最终在界面上显示出来就必须有个物理上 Container也就是说界面设计应该是项充满创造性、富有乐趣工作但是却往往被认为非常枯燥和繁琐究其原因是界面布局领域所采用描述概念和具体实现语言的间存在很大语义隔阂而般界面开发工具提供所见即所得以及界面布局管理器等方案也无法很好地解决这个问题 |