InfoQ

新闻

Nimbus外观:Java的矢量用户界面

作者 Geoffrey Wiseman译者 苏宇 发布于 2007年9月14日 上午1时0分

社区
Java
主题
声明
标签
Swing,
Java SE

Nimbus外观(Look-and-Feel,LAF)项目已经接近完工,Jasper Potts在公布这条消息的同时还描述了该项目背后的多项技术,并提供了若干截图

Nimbus中的所有控件均采用2D矢量图形描绘,甚至连图标也不例外。这意味着,尽管Nimbus仅有56k大小,但却能提供极为丰富的外观式样。

技术出众,潜力一样重要。近几个月来,支持适用于高DPI(dot-per-inch,点每英寸)显示设备的分辨率无关的用户界面方案备受关注,Nimbus在这一领域极具潜质。

尽管很多人都认为高DPI用户界面对高分辨率显示设备即将到来的进步极为重要,然而Jeff Atwood认为,根据显示器分辨率的增长速率,200 DPI的高清时代还很遥远。

要清醒的认识到在过去的20年中显示器的分辨率仅仅增长了不到两倍。显示器越来越大是不争的事实,但是,实际上分辨率却只增大了1.6倍。

除非技术上有重大突破,否则电脑显示器的分辨率在短短几年内是不可能达到200 DPI的,即便是十年后,这也很难做到。我很希望我的想法是错的,因为历史依据——更不用说常见的“越大越好”的消费者行为——证明这是势不可挡的。

Nimbus的用户界面由Painter接口的无状态实现绘制。颜色、图标,以及字体均存储在UIDefaults中(译注:一个Hashtable的扩展),这些设置可以被定制化或者被外观组件读取以适应Nimbus的界面风格。与此前的界面风格相比,Nimbus对CPU/GPU的占用更大一些,但运行速度依然很快。绘制器(Painters)都是借助一个新型可视化编辑器完成的:

这正是我们制作这个工具的目的,是为了使用户可以为控件的每个状态绘制2D矢量图,就像使用一个迷你的Photoshop或者Illustrator一样。这些绘制好的图形随后将被转译成Java2D代码,这样就可以被当作一个简单的绘制器使用了。它还支持一些更高级的功能,如:亚像素(sub- pixel)精确度、复杂渐变(gradient)、层(layer)、以及层特效(如投射阴影和光晕)。目前该工具尚未公开,但我们已经致力于使其开源化,实用化,这样用户就可以用它制作绘制器,并在应用程序中随意使用。

译注:亚像素,构成象素的单色细小的点。显示器等显示装置通过对纵横有规则地排列的细小点(象素)的发色进行显示。象素由红色的点、绿色的点、蓝色的点这3种更为细小的点聚集着,通过它们各自颜色的增强衰弱以及3种颜色的组合表现出各种各样的颜色。把构成这些象素细小的单色的点称为辅助象素、副象素。)

第一个Alpha版本即将放出,更多消息敬请关注InfoQ的Java社区,以及Java SE主题

查看英文原文:Nimbus Look-and-Feel: Vector UIs for Java
译者简介:苏宇,网名beanworms,软件工程师,开源项目XRuby成员。爱好广泛,尤喜烹饪。乐于寻找更好的解决问题的方法,目前对Ruby技术颇为着迷,个人blog为:http://azure-sky.javaeye.com/。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

2 条回复

回复

工具 发表人 Xiaogang Guo 发表于 2007年9月14日 上午4时57分
Re: 工具 发表人 霍 泰稳 发表于 2007年9月14日 上午9时0分
  1. 返回顶部

    工具

    2007年9月14日 上午4时57分 发表人 Xiaogang Guo

    真的挺漂亮。稍微看过LAF的都知道LAF有多麻烦,等不及想看看这个新工具。

  2. 返回顶部

    Re: 工具

    2007年9月14日 上午9时0分 发表人 霍 泰稳

    这个工具对于那些小型的设备,如手机、PDA什么的是不是更有用处?

独家内容

专访开源项目Amoeba架构师陈思儒

DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。

使用JSF、Ajax和Seam开发Portlets(2/3)

作为三期系列文章的第二部分,本文延续了上一期内容,介绍了RichFaces,包括如何把RichFaces集成到之前提到的示例应用中、如何部署RichFaces porlet和RichFaces的多种特性和功能。

Jeff Barr谈论Amazon Web服务

Amazon Web Services(AWS)的传道者Jeff Barr讨论了SimpleDB、S3、EC2、SQS、云计算、Amazon的不同服务如何与应用交互、AWS的起源、SimpleDB和微软SQL Server Data Services、AWS cloud的全球化、三月份的AWS停机。

用Erlang实现领域特定语言

Erlang的并发模型很有名,它的健壮性也很有名。但其他方面呢?在这篇文章里,Dennis Byrne演示了如何用Erlang建立内部DSL。

基于Rails的企业级应用剖析

本视频主要以FreeWheel为例,对一个基于Rails的企业级应用进行了剖析。其中包括:FreeWheel的架构、部署、数据库的问题、REST API、敏捷开发过程、如何去写测试以及持续集成等等。

JavaFX技术预览

JavaFX显示了Sun的Java系列产品市场方向的一个重大转变。随着1.0版的即将发布,InfoQ以JavaFX预览版为参考,与Sun高级工程师Joshua Marinacci探讨了即将发布的1.0正式版。

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。