飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

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

评论

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

接口测试怎么进行,如何做好接口测试

测试人生路

软件测试 接口测试

讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer

比伯

Java 编程 架构 面试 计算机

「更高更快更稳」,看阿里巴巴如何修炼容器服务「内外功」

阿里巴巴云原生

容器 运维 云原生 双十一 CloudNative

我在阿里巴巴做 Serverless 云研发平台

阿里巴巴云原生

Serverless 容器 开发者 云原生 CloudNative

价值、产业、数据加密,区块链如何助力互联网升级?

CECBC

区块链 互联网

LeetCode题解:52. N皇后 II,回溯+哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

只能用分布式锁,也能搞定每秒上千订单的高并发优化?

Java架构师迁哥

挑战赛 | 话题王者VS互动先锋(第一季)

InfoQ写作社区官方

话题讨论 热门活动

架构师训练营 1 期 -- 第十一周总结

曾彪彪

极客大学架构师训练营

《迅雷链精品课》第十课:共识算法理论基础

迅雷链

区块链

程序员的故事

Philips

敏捷开发 快速开发 原创小说 企业开发 企业应用

每周学点TARS——服务自定义命令

TARS基金会

c++ DevOps 后端 TARS

mysql的这些坑你踩过吗?快来看看怎么优化mysql?

比伯

Java 编程 架构 面试 计算机

区块链产业下的“非遗”突围战:商业化和手艺人发掘

CECBC

区块链 非遗

训练营第七周总结

大脸猫

极客大学架构师训练营

HTTP协议概述

落日楼台H

https HTTP 协议 HTTP2.0 HTTP3.0

【得物技术】搜索引擎技术简介

得物技术

搜索引擎 技术 算法 排序 搜索

打造Django私有化缓存组件django-api-cache

pygodnet

django django-api-cache django缓存 私有化缓存 接口缓存

ETV全球熵APP系统开发|ETV全球熵软件开发

系统开发 现成系统

训练营第七周作业

大脸猫

极客大学架构师训练营

看区块链如何打通信息壁垒,盘活万亿级”积分”市场

CECBC

区块链 信息

年轻人想详细了解做了十年Linux跟做了十年Windows的程序员差距有多大吗?听我慢慢道来!

ShenDu_Linux

Linux 程序员 windows

拆解增长黑客之知识篇

懒杨杨

产品 运营 增长

架构师训练营第二周框架设计课后练习

Geek_xq

线程池的优点及其原理,代码实现线程池。简单、明了。

Linux服务器开发

后端 网络编程 线程池 Linux服务器 web服务器

一周信创舆情观察(11.23~11.29)

统小信uos

我对业务方提出需求的态度

boshi

随笔杂谈 需求落地

技巧收藏|10个JavaScript常用数组操作方法

华为云开发者联盟

Java 数组 开发

已拿腾讯后台开发岗offer,简单说下自己的面试经历和学习路线

程序员小灰

c++ 后台开发 架构师 TCP/IP Linux服务器开发

智能与影像的强耦合:华为Mate 40系列的视觉探索

脑极体

想了解任务型对话机器人,我们先从自然语言理解聊起

华为云开发者联盟

人工智能 机器人 自然语言

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