设置Nimbus外观Java教程-永远不会到达catch块以设置另一个外观。

3

Java教程给出了以下设置Nimbus外观的示例:Java教程 - Nimbus外观

import javax.swing.UIManager.*;

try {
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
            UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}

我认为只有当UIManager.setLookAndFeel()抛出异常时才会发生catch。 如果在catch块中放置设置另一个外观的代码,则理论上永远不会执行,因为您仅在已安装的外观中使用.setLookAndFeel()。 如果系统上没有Nimbus,则它将通过ForEach并从try-catch块中退出,而不会设置任何内容。
“如果Nimbus不可用...” 的代码是否应该放在 ForEach之后,catch之前呢? 在catch块中,您可能需要指定JAVA提供的SystemLookAndFeel或DefaultLookAndFeel。
我对上述try-catch块的理解正确吗?我很担心我可能会漏掉什么,因为这个示例代码已经被引用了很多次,我也看到了这个问题被提出。
1个回答

0

Nimbus从类级别始终可用,因为它在Java 1.5之后的每个JRE中都包含。

“不可用”意味着如果系统在反射机制中出现任何问题而无法加载对象,则可能会出现这种情况。

无论如何,我建议您在finally块中设置其他外观。这样,即使在较低版本的Java中,您也可以加载替代方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接