Java GUI外观变化

时间:2009-07-22 14:40:15

标签: java user-interface

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

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

4 个答案:

答案 0 :(得分:9)

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

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");

物质的一个例子(物质有许多皮肤和主题,如果你想了解更多在他们的网站上阅读他们的文件)将是:

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

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

UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

最后,如果你在Windows上,你可以使用系统外观并感觉如下:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

答案 1 :(得分:3)

在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();

答案 2 :(得分:1)

忽略选择外观(LAF)的赞成,我会添加一些使用它们的经验......

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

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

答案 3 :(得分:0)

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

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

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