我是编程新手,但我正准备编写一个Java程序。正如我正在计划的那样,我正在努力为它找到合适的GUI。我找到了带有GUI选项的this页面。我有两个问题:
答案 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,看看你能用它们的外观和感觉机制做些什么,但不要指望奇迹。