2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:002343

评论

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

正则表达式.06 - 断言

insight

正则表达式 3月日更

醒一醒,讲到 ZooKeeper 的选举机制了

HelloGitHub

Java zookeeper ZooKeeper原理

LeetCode题解:64. 最小路径和,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

马特量化交易机器人系统开发网格策略

薇電13242772558

PostgreSQL高校数据库课程改革系列活动

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

对象存储与HashData多云战略

酷克数据HashData

问题剖析之消息队列的架构设计

Kylin

读书笔记 消息队列架构 3月日更

夺命剪刀脚(死锁)

鲁米

方法论 死锁

Midway Serverless 发布 2.0,一体化让前端研发再次提效

Serverless Devs

Serverless 云原生 大前端

《她说》——我们自出版的第一本书

张凯峰

火爆!GitHub 标星 144k 的前后端学习路线

沉默王二

学习 后端

Python 中级知识之装饰器,滚雪球学 Python

梦想橡皮擦

28天写作 3月日更

硬核干货丨借助多容器Pod,轻松扩展K8S中的应用

Rancher

有道 Kubernetes 容器API监控系统设计和实践

有道技术团队

Kubernetes 容器 分布式

有源晶振和无源晶振的区别

不脱发的程序猿

28天写作 电路设计 3月日更 晶振 元器件

你的决定我做主——锚定效应

Justin

心理学 28天写作 游戏设计

法大大完成D轮9亿元融资,腾讯领投

人称T客

第二届开发者社区【金码奖】,揭晓了!

京东科技开发者

开发者 开发者社区

使用 Flink 前需要知道的 10 个『陷阱』

Apache Flink

flink

makefile:带你了解一种常用于GNU gcc编译的工具语言

华为云开发者联盟

编译器 LiteOS makefile 语言 GNU

中国石油数字化转型提速 HashData助力梦想云建设

酷克数据HashData

Python yaml 使用的包

HoneyMoose

Redis工具收费后新的开源已出现

happlyfox

学习 工具软件 28天写作 3月日更

深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

xcbeyond

MySQL MySQL优化 3月日更

历史技术栈体系即将崩溃,我们如何应对?

VoltDB

数据库 5G 边缘计算 VoltDB

Everything is Serverless,从开源框架对比说起

华为云开发者联盟

云计算 开源 Serverless 云原生 无服务器

如何通过XMind 实践OKR 工作法

博文视点Broadview

“七大属性加持,三个全新升级组件”这个高性能利器有点厉害

华为云开发者联盟

数据库 数据湖 Clickhouse 华为云 集群

Superset 兼容ADB(AnalyticDB-MySQL)

data_y

Python MySQL Apache Superset

(28DW-S8-Day19) 以太坊是什么

mtfelix

28天写作

数据分析利器之Excel功能篇

小飞象@木木自由

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