写点什么

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

评论

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

Linux 中 Grep 命令的常见示例,非常全面!

wljslmz

Linux grep 10月月更

STM32L0 系列 EEPROM 读写,程序卡死?

矜辰所致

EEPROM STM32L051 10月月更

Python进阶(二十四)Python中函数的参数定义和可变参数

No Silver Bullet

Python 函数 可变参数 10月月更

「趣学前端」玩转CSS的2D转换,也许能有个代码纸片人

叶一一

CSS 前端 10月月更

还不会配置Python虚拟环境?看这篇就懂了

芥末拌个饭吧

后端 配置管理 python 3.5+ 10月月更

如何在 SAP BTP Java 应用里使用 SAP HANA 数据库

汪子熙

云原生 Cloud SAP 10月月更 btp

「CSS畅想」当我拥有了一个小夜灯,我的CSS副属性被激活了

叶一一

CSS JavaScript 前端 10月月更

flask sqlalchemy使用简述

芥末拌个饭吧

sqlalchemy python 3.5+ 10月月更

长安链源码分析之网络模块 net-liquid(2)

【一Go到底】第十六天---跳转控制goto&return

指剑

Go golang 10月月更

【LeetCode】用栈操作构建数组Java题解

Albert

算法 LeetCode 10月月更

「CSS畅想」有一天,我遇到了一个奇特的路灯,眼里一下子有了光

叶一一

CSS JavaScript 前端 10月月更

【c++图论例题学习】洛谷 P3366最小生成树

贤鱼很忙

10月月更

【c++图论学习】洛谷P1396营救

贤鱼很忙

c++ 算法 10月月更

读书笔记 | 你最终能走多远,取决于见识

宇宙之一粟

读书笔记 10月月更

【一Go到底】第十六天---函数

指剑

Go golang 10月月更

可能的二分法

掘金安东尼

算法 10月月更

跟着卷卷龙一起学Camera--双摄04

卷卷龙

ISP camera 10月月更

2022-10-15:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。 你可以按 任意顺序 返回答案。 要求时间复杂度O(N)。 输入: nums = [1,1,1

福大大架构师每日一题

算法 rust 福大大

谈谈PHP switch case和其他语言的区别

芥末拌个饭吧

php Go 10月月更

跟着卷卷龙一起学Camera--双摄03

卷卷龙

ISP camera 10月月更

跟着卷卷龙一起学Camera--双摄05

卷卷龙

ISP camera 10月月更

Python还不会用日志模块?本文给你答案

芥末拌个饭吧

python 3.5+ logging模块 10月月更

python程序能打包吗?看这篇就知道了

芥末拌个饭吧

python 3.5+ pyinstaller 10月月更

Goroutine是什么?进程、线程、协程又是什么?有什么区别和联系?

王中阳Go

Go 线程 进程 协程 10月月更

PriorityQueue 源码解析(二)

知识浅谈

Priority Queue 10月月更

我用【c++】写出了会说话的学生考勤系统

贤鱼很忙

c++ 10月月更

Docker搭建私有镜像仓库与WordPress

okokabcd

Docker

长安链源码分析之网络模块net-liquid(1)

「趣学前端」提到布局,我第一个会想到的是flex

叶一一

CSS 前端 10月月更

CorelDRAW 2019 软件应用项目(一)

张立梵

设计师 CorelDRAW 2022 10月月更

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