2

我已经为 Java Swing 使用了一些不同的外观,但我并不是 100% 喜欢任何人,所以我经常最终定制它。有时我在考虑编写自己的 LaF(通过扩展现有的 LaF)是否是一个更好的主意,但我真的不知道。

目前,我主要使用Nimbus,但我更改了所有颜色(更深的颜色)并重写了一些组件的外观,如滑块和滚动条。我还主要自定义所有表格,并且正在考虑更改其他一些组件的外观。

何时建议创建新的外观而不是自定义?优缺点都有什么?

即定制 Nimbus 或通过扩展 Nimbus 创建一个新的?

相关文章:创建自定义外观(旧)

4

3 回答 3

6

何时建议创建新的外观而不是自定义?

  • 当您希望您的应用在每个主要平台上看起来几乎完全相同时
  • 当你想摆脱你的应用程序是 Java 应用程序的“死赠品”时(这是相当多的为 OS X 用户销售商业软件的程序员所关心的问题,Java 在用户中的名声非常糟糕[这是不应该的,但它是事实])。

这是一个示例,说明您必须经历某种疾病才能稍微增强可悲的 JTable(顺便说一句,此博客的作者后来被 Apple 聘用了):

http://explodingpixels.wordpress.com/2009/05/18/creating-a-better-jtable/

有哪些优点?

可以使应用程序看起来几乎相同(唯一的区别是字体渲染,从 OS X 到 Linux 到 Windows 略有不同......但它可以做得非常接近,或者你可以使用“非 AA “像素完美的字体,看起来完全一样)。

和缺点?

  • 你的应用程序根本不会有原生外观。
  • 工作量很大(Swing 并不简单:它是某种过度设计、过于复杂的野兽,很难判断它是“设计得非常巧妙”还是“设计得非常愚蠢”)。

我已经编写了几个在 Windows、Linux 和 OS X 上看起来完全相同的自定义 Swing 组件(使用像素完美字体),但我不会编写整个 LnF。

于 2010-04-25T01:55:27.147 回答
0

我认为这个问题除了一般性之外没有任何答案,例如:

  • 当将更改应用于现有外观的工作量大于创建新外观时,或

  • 当您出于非技术原因想要创建新的外观时。

于 2010-04-25T00:56:33.727 回答
0

编写 Java 外观并不适合胆小的人。这本身就是一项努力,这就是为什么我会说找到适合您需求的预先存在的外观和感觉可能更有效。

Kathryn Huxtable 一直致力于实施Sea Glass Look and Feel,这是一项艰巨的任务。它基于 Nimbus,但 Nimbus 和它的 Swing 基础并不像创建自定义外观所需的那样可扩展。这意味着必须将大部分代码复制并粘贴到子类中。在处理另一个项目时,您可能不想在这种事情上偏离轨道。

Synthetica也是另一个预先存在的选项,我认为它非常适合皮肤。

于 2011-03-10T16:15:45.500 回答