【问题标题】:Use Darcula LAF in JFrame在 JFrame 中使用 Darcula LAF
【发布时间】:2016-07-15 19:55:56
【问题描述】:

我在 Netbeans 中安装了 Darcula LAF,它可以正常工作。它修改了 IDE 的外观以及应用程序在“预览设计”弹出窗口和 GUI Builder 中的外观。

Here 就是一个例子。

但是,运行应用程序时外观并没有保持不变。

Here 就是一个例子。

使用此代码列出已安装的外观

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            System.out.println(info.getName());
        }

很明显,Darcula LaF 已安装。但是,它没有显示为已安装到编译器。有没有办法让我在维护 Netbeans 模块的同时为编译器获取 LaF?

我查看了download pageGitHub page 甚至Geertjan's blog 以获取有关该主题的信息,但没有发现与此相关的信息。

我确定我遗漏了一些非常明显的东西。不设置外观会默认为金属,使用操作系统默认外观也不能解决问题。

感谢所有帮助,如果格式不正确,我深表歉意。

编辑:为清楚起见,它仅在代码中设置为 Nimbus。有一些屏幕截图说明它在未设置为 Nimbus 时的反应。它默认为金属。 我之前已经删除了将其设置为 Nimbus 的代码,并且它使用了 Metal。 http://prntscr.com/bte2xg 过去我将它设置为使用“Darcula”而不是 Nimbus,但它仍然使用 Metal。 http://prntscr.com/bte2b5

过去我已将其设置为使用“darcula-1.0.0”而不是 Nimbus,但它仍然使用 Metal。 http://prntscr.com/bte3nh

过去我已将其设置为使用“darcula-1.0.0.jar”而不是 Nimbus,但它仍然使用 Metal。 http://prntscr.com/bte42m

过去我已将其设置为使用“com.bulenkov.darcula”,但它仍然使用 Metal。 http://prntscr.com/bte3du

我只是把 Nimbus 留在了那里,只是为了让它出现在一些像样的东西中。

【问题讨论】:

  • 在您的代码中,您告诉 Java 使用 Nimbus —— 那么您为什么希望它使用 Darcula L&F?是否已安装并不重要——重要的是您的代码告诉 Java 的内容。
  • 为了清楚起见,它只设置为 Nimbus。请参阅对主帖子的编辑,以了解当该代码不在其中时会发生什么。我认为您会喜欢看 Metal 以外的其他东西的示例,但由于它看起来不是,所以我附上了屏幕截图,其中没有将代码设置为 Nimbus。

标签: java swing netbeans look-and-feel


【解决方案1】:

包括在类路径中找到here 的jar 文件并使用此代码

BasicLookAndFeel darcula = new DarculaLaf();
        UIManager.setLookAndFeel(darcula);

解决了这个问题。我为自己的愚蠢道歉。

【讨论】:

  • 要通过 Gradle 添加它,请将其添加到依赖项部分:编译组:'com.bulenkov',名称:'darcula',版本:'2018.2'
【解决方案2】:
    for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        System.out.println(info.getName());
        if ("Nimbus".equals(info.getName())) {
            javax.swing.UIManager.setLookAndFeel(info.getClassName());
            break;
        }
    }

您的代码告诉 Java 使用 Nimbus——因此无论安装了任何其他 L&F,它都会使用 Nimbus。如果您想使用另一个 L&F,请去掉安装 Nimbus L&F 的线路并用您的替换它。

【讨论】:

    【解决方案3】:

    在你的库中添加 darcula.jar; 然后在您的源文件中导入 com.bulenkov.darcula.DarculaLaf 之后

    for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        System.out.println(info.getName());
        if ("Nimbus".equals(info.getName())) {
            javax.swing.UIManager.setLookAndFeel(new DarculaLaf());
            break;
        }
    }
    

    确保在项目属性-> 打包选项卡中勾选“复制依赖库”。

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多