Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaGUI外观和感觉的变化_Java_User Interface - Fatal编程技术网

JavaGUI外观和感觉的变化

JavaGUI外观和感觉的变化,java,user-interface,Java,User Interface,我是编程新手,但我正准备编写一个Java程序。在我进行规划时,我正在尝试为它找到合适的GUI。我找到了带有GUI选项的页面。我有两个问题: 这些将仅仅插入JavaGUI构建器吗 在程序构建之后,更改GUI外观有多容易(或难) 更改程序的外观和感觉非常简单: UIManager.setLookAndFeel("fully qualified name of look and feel"); 在创建任何GUI创建代码之前。因此,您可以使用GUI生成器轻松创建所有GUI,然后在程序开始时简单地调用它

我是编程新手,但我正准备编写一个Java程序。在我进行规划时,我正在尝试为它找到合适的GUI。我找到了带有GUI选项的页面。我有两个问题:

  • 这些将仅仅插入JavaGUI构建器吗
  • 在程序构建之后,更改GUI外观有多容易(或难)

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

    UIManager.setLookAndFeel("fully qualified name of look and feel");
    
    在创建任何GUI创建代码之前。因此,您可以使用GUI生成器轻松创建所有GUI,然后在程序开始时简单地调用它

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

    作为建议,在我看来,两个非常好看(而且足够专业)的外观和感觉是Substance和Nimbus,它们将作为默认的外观和感觉(至少这是计划)随JRE的后续版本一起提供,并且可以从java.net单独下载

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

    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
    
    UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel());
    
    Substance的一个例子是(Substance有很多皮肤和主题,如果你想了解更多,请在他们的网站上阅读他们的文档):

    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
    
    UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel());
    
    还请注意,您可以这样使用跨平台蒙皮(金属):

    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    
    最后,如果您在windows上,您可以使用系统,其外观和感觉如下:

    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
    
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    

    一般来说,具有“外观”的第三方GUI库并不流行,这可能是其质量的一个标志

    标准GUI库本质上非常复杂,虽然它们支持一些外观调整,但这些调整通常是次要的或受限的


    我建议您坚持使用Swing或SWT,看看您能用它们的外观机制做些什么,但不要期待奇迹出现。

    基于Uri所说的,您可能希望使用一种更知名的外观

    如果您使用Swing,您可能希望了解如何使用look and feel。。。它包含在Java6U10和更高版本中。Nimbus构建在Java5和更新版本中包含的框架上

    当然,如果最终用户使用的是较低版本,它将抛出一个不受支持的lookandfeelexception,并默认为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(合金和合成材料)。一些laf还提供对widget的支持;物质支持一些JIDE和SwingX。最终的结果是一个部分蒙皮的应用程序。不漂亮。确保LAF支持所有组件。如果您是纯Swing/AWT,则没有问题


    鉴于此,我们使用合金作为JIDE支架,考虑转移到Synthetica。我们希望使用Substance,但它没有任何JIDE支持。

    请注意,如果UIManager.setLookAndFeel找不到所说的外观,它将抛出一个不受支持的外观和感觉异常。我需要使用UIManager.setLookAndFeel(“com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel”)让nimbus工作。请注意com.sun.swing包,而不是javax.swing。这就是为什么您有一个新的jre版本,其中包括“非官方”com.sun包中的Nimbus外观。您不能指望此软件包将来可用。如果您将Nimbus作为外部库下载,我给您的路径“javax.swing”是正确的。一旦Nimbus作为官方软件包包含在jre中,这也将成为正式名称。因此,如果我是你,我会下载库并使用它,直到Nimbus作为默认lnf.Savvas发布,你说,“还要注意,你可以使用跨平台蒙皮(金属)…”。所有物质皮肤是否都不跨平台?我怎么知道哪些不是呢?不,我指的是Java附带的默认跨平台外观。如果您有允许用户在运行时更改外观的代码(例如,通过菜单),那么您将希望在其选项中包含默认外观。要了解如何在运行时更改外观,请查看发布的答案R.Bemrose…为什么它们不是很受欢迎?你看到我链接的那些了吗?它们看起来很漂亮。什么样的质量问题会阻止人们使用它们?我能不能在安装程序中包含必要的库(或其他什么),这样用户就可以看到我开发它时想要的外观?你可以在发行版中包含look and feel.jar文件,并将其作为类路径的一部分。在非标准外观设计的情况下,包含.jar文件不是常见的做法吗?否则,为什么R.Bemrose(或任何其他人)会担心不受支持的LookandFeelException,它会默认为默认的外观?或者我不明白?当您在发行版中包含jar文件时,您会将其包含在存储库的文件夹中(通常不是强制性的)。然后,您的程序调用该库(在本例中为外观)。但是如果图书馆因为某种原因丢失了,会发生什么呢?在这种情况下,你会得到一个适当的例外。有些外观仅在某些平台上受支持。例如,您不能在windows上使用某些LNF,在MacOS上使用其他LNF,在Linux上使用其他LNF。这是当你得到一个不受支持的LookandFeelException时。