阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

  • 2007-09-14
  • 本文字数:1177 字

    阅读完需:约 4 分钟

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

2007-09-14 01:001774

评论

发布
暂无评论
发现更多内容

夏天将来,愿我们有足够的知识继续前进

Amon Lee

人生一大误区:做到80%就不错了

池建强

个人成长 自我管理

程序员陪娃漫画系列——夜宵

孙苏勇

程序员 生活 陪伴 漫画

学会打破确定性思维,才能做得更好

松花皮蛋me

高效工作 10X工作法 精益开发

如何高效开会

熊斌

效率 效率工具

网站架构方法

Ya

架构 方法论 网站 大型软件

Java并发编程系列——线程的等待与唤醒

孙苏勇

Java Java并发 并发编程 线程

死磕Java并发(5):线程详解,Java开发这么久,这些线程的基础知识你确定都会了?

Seven七哥

Java Java并发 线程

我为什么不愿在公众号发文章,却愿在写作平台发

小天同学

微信公众平台 产品 反馈 写作平台

专家的直觉和你的直觉

池建强

书摘 直觉

香港上市"失效"、传言申请科创板,聊聊半年亏损52亿的旷视科技 | IPO招股书系列(4)

赵新龙

IPO 旷视科技 上市 招股说明书 科创板

【获奖名单公示】作为一名技术人,我为什么要写作?

InfoQ写作社区官方

程序员 写作 写作平台 热门活动

JCJC错别字检测JS接口新增CORS跨域支持

田春峰-JCJC错别字检测

npm version 使用详解

Leo

大前端 npm 语义化 版本控制

对开发人员有用的定律、理论、原则和模式

松花皮蛋me

Java 设计模式

【奖项公布】致内测用户——亲爱的1号创作者们~

InfoQ写作社区官方

写作平台 1号创作者 奖品 热门活动

网络编程方法

Ya

方法论 网络编程 socket

原创 | DDD与分层

编程道与术

媒体的经营 02 | 媒体/内容行业的主要变现方式

邓瑞恒Ryan

创业 投资 商业

怎么写出bug的

三爻

小技巧:ssh -D 让终端访问或下载快一点

肖飞码字

Linux Shell

3000字长文教你大数据该怎么学!

老蒙

Java 大数据 spark 学习 开源

媒体的经营 03 | 很显然,媒体卖广告是最没有前途的

邓瑞恒Ryan

创业 媒体 商业模式

回"疫"录(5):不见面,云拜年

小天同学

疫情 回忆录 现实纪录 纪实

这一战,必战,若一去不返,便一去不返

霍太稳@极客邦科技

创业 项目管理 团队建设 InfoQ

稀缺:我们为什么会陷入贫穷与忙碌

insight

读书笔记

深度工作

insight

读书笔记

说说疫情下的新常态该怎么应对

CD826

疫情 新常态

您到底要说什么?

水色

Gary的唠叨(二):先算是非,后算得失

小盖

Gary的唠叨 感悟

网站是什么?

insight

网站

Nimbus外观:Java的矢量用户界面_Java_Geoffrey Wiseman_InfoQ精选文章