Java GUI外观变化

我是编程新手,但我正准备编写一个Java程序。 正如我正在计划的那样,我正在努力为它找到合适的GUI。 我发现这个页面有GUI选项。 我有两个问题:

  1. 这些只是插入Java GUI构建器吗?
  2. 在构建程序之后更改GUI外观有多容易(或很难)?

更改程序的外观和感觉非常简单:

UIManager.setLookAndFeel("fully qualified name of look and feel"); 

在创建任何GUI创建代码之前。 因此,您可以使用GUI构建器轻松创建所有GUI,然后在程序开始时调用它。

(请注意,某些外观和感觉,如Substance,在涉及线程问题时非常严格,因此您最好确保所有GUI代码都是从事件调度线程运行的。)

作为一个建议,在我看来,两个非常好看(和专业外观)的外观和感觉是Substance和Nimbus将随后发布的JRE作为默认的外观N-feel(至少那是计划)和可以从java.net单独下载。

因此,如果您选择Nimbus,代码将是:

 UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); 

Substance的一个例子(Substance有许多皮肤和主题,如果你想知道更多在他们的网站上阅读他们的文档)将是:

 UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel()); 

另请注意,您可以像这样使用跨平台皮肤(金属):

 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 

最后,如果你在Windows上,你可以使用系统外观和感觉像这样:

 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

在Uri所说的基础上,您可能希望坚持使用其中一种更为人熟知的外观和感觉。

如果您使用Swing,您可能需要考虑使用Nimbus外观……它包含在Java 6u10及更新版本中。 Nimbus建立在Java 5及更新版本附带的Synth框架之上。

当然,如果最终用户使用较低版本,它将抛出UnsupportedLookAndFeelException并默认为JVM默认的任何内容(通常是Metal / Ocean(跨平台)主题)。

作为旁注,如果您使用Swing,您可以切换正在使用的外观。 你只需要打电话

 // "lnfName" is the look and feel name. // "frame" is the window's JFrame. // A try/catch block is omitted here. UIManager.setLookAndFeel(lnfName); SwingUtilities.updateComponentTreeUI(frame); frame.pack(); 

无视选择外观(LAF)的赞成,我将添加一些使用它们的经验……

如果您正在使用第三方/ cots组件库(JIDE,SwingLabs / SwingX等),您将遇到问题,因为UI类并不总是存在或与所有LAF保持同步。 JIDE支持一些外部LAF(Alloy和Synthetica)。 一些LAF也为小部件提供支持; Substance支持一些JIDE和SwingX。 最终结果是部分皮肤化的应用程序。 不漂亮。 确保您的LAF支持所有组件。 如果你是纯粹的Swing / AWT,没问题。

鉴于此,考虑转向Synthetica,我们使用Alloy for JIDE支持。 我们很乐意使用Substance,但它没有任何JIDE支持。

一般来说,具有“外观和感觉”的第三方GUI库不是很受欢迎,这可能表明它们的质量。

标准GUI库本质上非常复杂,虽然它们支持一些外观和调整,但调整通常很小或受到限制。

我建议坚持使用Swing或SWT,看看你能用它们的外观和感觉机制做些什么,但不要指望奇迹。