2010-04-24 46 views
2

我对Java Swing使用了一些不同的外观和感觉,但我并不真的很喜欢任何人,所以我经常最终定制它很多。有时候我在想如果写一个自己的LaF(通过扩展现有的LaF)是一个更好的主意,但我并不知道。目前,我主要使用Nimbus,但是我改变了所有的颜色(变暗),并重写了一些组件的外观,比如sliders和scrollbars。我也主要定制所有的表格,我正在考虑改变一些其他组件的外观。什么时候应该为Java Swing编写自己的外观而不是自定义一个?

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

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

相关文章:Creating a Custom Look and Feel(旧)

回答

6

当它建议建立一个新的外观和感觉,而不是定制一个?

  • 当你想如果你想摆脱“死赠品”,你的应用程序是一个Java应用程序(这是一个关心你的应用看起来真的几乎一模一样的各种主流移动平台
  • 对于一些为OS X用户销售商业软件的程序员来说,Java在用户中的代表性很差(这是不合适的,但这是事实))。

这里是你必须要经过提升一点点可怜的JTable(这个博客后得到了由苹果公司聘请的BTW的作者)的这种病的例子:

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

有什么优点?

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

and cons?

  • 你的应用程序将不会有本地化的外观。
  • 这是一项很多工作(Swing不太容易:它是某种过度设计,过于复杂的野兽,很难判断它是“非常巧妙的设计”还是“难以置信的设计”)。

我已经写了几个自定义Swing组件寻找正是在Windows,Linux和(使用像素完美的字体)OS X,但我同样不会写一个完整的LNF。

+0

+1 - 好解释 – 2010-04-25 03:49:13

+0

谢谢。最后几行很有帮助。 – Jonas 2010-04-25 08:41:26

+1

+1,很好的回答!作为在Swing之上编写了定制L&F库的人,我可以证明与之相关的许多痛苦。 – JasCav 2011-03-10 16:18:56

0

我不认为,这是除了像泛泛而谈这个问题的任何答案:

  • 时将更改应用到现有的外观的努力感觉大于创建一个新的,或者当你想为非技术原因创建一个新的外观时,

0

编写一个Java外观并不是因为心灵的模糊。这本身就是一种努力,这就是为什么我会说,找到适合您需求的预先存在的外观可能更有效。

Kathryn Huxtable一直致力于实施Sea Glass Look and Feel,这一直是一项艰巨的任务。它基于Nimbus,尽管Nimbus和它的Swing基础并不像创建自定义外观所需的那样具有可扩展性。这意味着大部分代码必须被复制并粘贴到子类中。在另一个项目上工作时,您可能不希望受到这种事情的追踪。

Synthetica也是另一个预先存在的选项,我认为它是相当皮肤的。

相关问题