【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:001777

评论

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

先收藏!关于Java类、接口、枚举的知识点大汇总

华为云开发者联盟

Java 接口 枚举

私有云、公共云、混合云安全性的优点和缺点

浪潮云

云计算

测试InfoQ 平台发布文章

木子的昼夜

日记 2021年2月22日(周一)

Changing Lin

2月春节不断更

我身边的高T,问了Java面试者这样的问题......

京东科技开发者

MySQL 数据库

诊所数字化:诊所开展私域运营的优劣势

boshi

医疗 私域运营 七日更 28天写作

阿里开发7年大牛:Android事件分发机制及设计思路,分享PDF高清版

欢喜学安卓

android 程序员 面试 移动开发

【LeetCode】托普利茨矩阵Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

超强前端面试真题+资源推荐

evantre

面试 大前端 面经

话题讨论 | 你在互联网大厂是个啥级别?

架构精进之路

话题讨论 28天写作 话题王者

刚学会 C++ 的小白用这个开源框架,做个 RPC 服务要多久?

HelloGitHub

c++ GitHub 开源 RPC

Kafka.04 - Kafka 部署

insight

kafka 2月春节不断更

我与技术面试那些事儿

我是哪吒

CSS html 大前端 28天写作 2月春节不断更

技术解析 | Doris SQL 原理解析

百度开发者中心

百度 Doris SQL优化

Koa中间件体系的重构经验

智联大前端

node.js 大前端 单元测试 重构 koa

android开发需要学什么!最全面试考点与面试技巧,已拿offer附真题解析

欢喜学安卓

android 程序员 面试 移动开发

容器 & 服务:一个Java应用的Docker构建实战

程序员架构进阶

Docker 容器 七日更 28天写作 2月春节不断更

为什么不推荐使用汉字作为密码?

不脱发的程序猿

程序人生 密码学 28天写作 二月春节不断更

Dapr 知多少 | 分布式应用运行时

圣杰

架构 云原生 k8s dapr

工作日志2-20

技术骨干

详解SSH 框架中对象调用流程

华为云开发者联盟

spring hibernate struts SSH 框架

技术扫盲:关于低代码编程的可持续性交付设计和分析

小傅哥

Java 小傅哥 服务端 低代码开发 可持续交付

MySQL查看及杀掉链接方法大全

Simon

MySQL

Flink SQL 性能优化:multiple input 详解

Apache Flink

flink

1.1 Go语言从入门到精通:开发环境搭建

xcbeyond

vscode 环境安装 28天写作 Go 语言

WinDbg 分析高内存占用问题

圣杰

dotnet windbg

如何检测社交网络中两个人是否是朋友关系(union-find算法)

Silently9527

程序员 算法和数据结构 union-find

基于证券云服务的总体架构设计应该怎么做?

Jason Tien

一文带你熟悉Pytorch->Caffe->om模型转换流程

华为云开发者联盟

网络 模型 PyTorch caffe 算子边界

配合Github Actions 做一个自动推送的 Rss 订阅机器人

Leetao

Python RSS Github Action

Apache Flink 在快手的过去、现在和未来

Apache Flink

flink

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