在 JFrame 中使用 Darcula LAF

问题描述 投票:0回答:2

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

但是,运行应用程序时,外观和感觉不会保持不变。

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

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

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

我查看了下载页面、GitHub 页面,甚至 Geertjan 的博客以获取有关该主题的信息,但没有发现与此相关的任何内容。

我确信我遗漏了一些非常明显的东西。不设置外观和感觉会默认为金属,并且使用操作系统默认外观和感觉也无法解决问题。

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

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

我过去将其设置为使用“darcula-1.0.0”而不是 Nimbus,但它仍然使用 Metal。

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

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

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

java swing netbeans look-and-feel
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 的线路并将其替换为您的。


2
投票

将 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;
    }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.