Nimbus 外观和感觉调整菜单栏的颜色

2023-12-01

我正在尝试调整 Nimbus 外观和感觉的颜色,但它只能部分工作。特别是我在调整菜单栏的颜色时遇到问题。

这是一个运行示例:

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UnsupportedLookAndFeelException;

public class JMenuColorTest extends JFrame {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    adjustLAF();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                JMenuColorTest test = new JMenuColorTest();
                test.setDefaultCloseOperation(EXIT_ON_CLOSE);
                test.setPreferredSize(new Dimension(400, 300));
                test.pack();
                test.setLocationRelativeTo(null);

                JMenuBar menuBar = new JMenuBar();
                JMenu menu1 = new JMenu("Menu 1");
                menu1.add(new JMenuItem("Item 1.1"));
                menu1.add(new JMenuItem("Item 1.2"));
                menu1.add(new JMenuItem("Item 1.3"));
                menuBar.add(menu1);
                JMenu menu2 = new JMenu("Menu 2");
                menu2.add(new JMenuItem("Item 2.1"));
                menu2.add(new JMenuItem("Item 2.2"));
                menu2.add(new JMenuItem("Item 2.3"));
                menuBar.add(menu2);
                test.setJMenuBar(menuBar);

                test.setVisible(true);
            }

            private void adjustLAF() throws ClassNotFoundException,
                InstantiationException, IllegalAccessException,
                UnsupportedLookAndFeelException {
                for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {

                        // Working
                        UIManager.put("control", Color.GREEN);

                        // Not working
                        UIManager.getLookAndFeelDefaults().put(
                            "MenuItem[Enabled].textForeground", Color.RED);

                        // Set the look and feel
                        UIManager.setLookAndFeel(info.getClassName());

                        // Not working
                        UIManager.put("control", Color.GREEN);

                        // Working
                        UIManager.getLookAndFeelDefaults().put(
                            "MenuItem[Enabled].textForeground", Color.RED);

                        break;
                    }
                }

            }
        });
    }
}

正如您所看到的,我能够设置控件的背景并设置 JMenuItem 的前景色。但我无法更改 JMenuItem 的背景,也无法更改 MenuBar 的颜色。我尝试了很多键http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html但我无法更改菜单栏的颜色。

另一个问题是?为什么我必须在设置外观之前和设置外观之后调用一次颜色调整?为什么我必须调用一次“UIManager.put()”和一次“UIManager.getLookAndFeelDefaults().put()”?

在我看来,Nimbus 确实有很多问题,不适合专业用途。我尝试同时使用 JDK 1.6.35 和 JDK 1.7.7,但是使用这两个 JDK 都无法让系统按预期运行?

对于如何调整 Nimbus 外观和感觉中菜单栏的颜色有什么建议吗?

提前致谢


for JMenuBar必须使用Painter, 去检查Nimbus 默认值#value

MenuBar[Enabled].backgroundPainter
MenuBar[Enabled].borderPainter

其余的答案是trashgod +1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nimbus 外观和感觉调整菜单栏的颜色 的相关文章

  • JavaFx ComboBox 绑定混乱

    我有一个 I18N 实现 它通过属性绑定 JavaFX UI 元素 例如 def translateLabel l Label key String args Any Unit l textProperty bind createStrin
  • Java 中的 sscanf 等效项[重复]

    这个问题在这里已经有答案了 可能的重复 用于使用已知模式解析字符串中的值的 sscanf 的 Java 等效项是什么 https stackoverflow com questions 8430022 what is the java eq
  • 为什么需要使用java.util.TimerTask的purge()?

    Timer cancel 取消任务 Timer purge 从此计时器的任务队列中删除所有已取消的任务 如果我不在这里使用 purge 会发生什么 当计时器的任务队列已满时会发生什么 除非您正在运行的计时器数量过多 否则实际计时器行为不会发
  • Java:计算字符串中字母的出现次数

    我正在尝试编写一个程序来计算字符串中字母的出现次数 例如 如果用户输入 Java 则会显示 j 1 a 2 v 1 但是 我的程序似乎有问题 当我输入 java 这个词时 它显示的是 j 0 a 1 v 0 Scanner myScanne
  • 是否值得清理 Filter 中的 ThreadLocals 来解决线程池相关问题?

    简而言之 tomcat 使用线程池 因此线程被重用 一些图书馆使用ThreadLocal变量 但不要清理它们 使用 remove 所以实际上它们将 脏 线程返回到池中 Tomcat 具有在关闭时检测这些事情并清理线程局部变量的新功能 但这意
  • Android 在 ROOM 数据库中插入大量数据

    我有大约 10 个模型 每个模型都有超过 120K 行和 90 列的记录 其中包含双数组值 在 Room 中插入任何模型都需要超过 125 130 秒 任何人都可以建议我需要做什么才能使用一些批量插入技术来保存所有这些 120K 该技术大约
  • Android - Firebase - 保存新数据而不覆盖旧数据

    创建此问题是因为我之前的问题包含 2 个问题 而不是将其缩小到 1 Aim 用户将能够存储新数据而不会覆盖之前提交的数据 描述 目前 当用户输入新报告时 事件报告节点中的用户事件报告数据将被覆盖 用户发送的旧事件报告中的数据应与新数据一起保
  • MySQL 中电话号码的最佳数据类型是什么?它的 Java 类型映射应该是什么?

    我正在将 MySQL 与 Spring JDBC 模板一起用于我的 Web 应用程序 我需要存储仅包含数字的电话号码 10 我对使用数据类型的数据类型有点困惑 MySQL 中最适合它的数据类型是什么 为此 Bean POJO 类中的 Jav
  • Netflix Archaius 动态配置

    我正在将 Hystrix 集成到现有项目中 并且希望从 xml 文件中读取配置值 而不是使用配置管理器提供配置属性 当 xml 文件中的值更新时 我希望 Hystrix 配置在运行时更新 这是我遵循的指南 https github com
  • 无法在 Spring boot 中使用 findOne() 方法

    我的项目是关于用户管理器网络的 我是 Spring 和 Java 的新手 这是我的代码 在 UserController 中 RequestMapping value users name method RequestMethod GET
  • 适当支持不区分大小写的映射

    我想实现一个不区分大小写的哈希映射 这个问题本身并不新鲜 但我想添加额外的功能 但不知道要采取什么总体方向 我希望客户能够做这样的事情 boolean preserve case true Map
  • 如何使用 apache commons cli 指定多个选项?

    我想要这样的东西 java programName jobs1 C 10 W 20 java programName job2 java programName job3 含内容 Option o1 new Option job2 some
  • 想要从 beanIO 字段名称标签在 csv 中写入标题

    我想在 csv 文件中写入标题 因为我的文本文件不包含任何标题 所以我想从 beanIO 字段名称标签写入它 我有一个 beanIO 有两个流 一个用于读取 另一个用于写入 这是输入文件 文本输入 txt 1 约翰 露 BA xxx1萨姆
  • 无法渲染非字符串的属性,toString 返回:null SPRING MVC 中的错误

    我正在尝试按照本教程为我的 spring mvc 项目创建一个通用错误处理程序 http www mkyong com spring mvc spring mvc exceptionhandler example http www mkyo
  • 如何从 Java 类调用 Kotlin 类

    我需要将意图从 java 活动传递到 Kotlin 活动 Java活动ProfileActivity class Intent selectGameIntent new Intent ProfileActivity this kotlin
  • 如何告诉杰克逊在反序列化期间忽略空对象?

    在反序列化过程中 据我理解是将JSON数据转换为Java对象的过程 我如何告诉Jackson 当它读取不包含数据的对象时 应该忽略它 我正在使用 Jackson 2 6 6 和 Spring 4 2 6 我的控制器收到的JSON数据如下 i
  • 使用服务器 java api 从 jasperserver 存储库检索资源

    我正在尝试使用其 java API 从 Jasperserver 存储库检索资源 根据jasper 报表服务器终极指南 https community jaspersoft com documentation jasperreports s
  • java:验证 GUI 中的所有文本字段是否已完成

    我正在尝试创建一个允许某人设置帐户的 GUI 我想验证按下创建帐户按钮时所有文本字段是否完整 做这个的最好方式是什么 我正在附加我的代码 但我对文本字段是否完整的验证不起作用 参见下面的代码 public class GUIaccounts
  • Java 统一编码

    A Java char is 2 bytes http java sun com docs books tutorial java nutsandbolts datatypes html 最大大小为 65 536 但有95 221 http
  • OkHttp javax.net.ssl.SSLPeerUnverifiedException:主机名domain.com未验证

    我几天来一直在努力让它发挥作用 我正在尝试通过以下方式连接到我的服务器https带有自签名证书 我认为现在没有任何页面或示例是我未读过的 我做了什么 按照本教程创建了 bks 密钥库 http blog crazybob org 2010

随机推荐

  • HttpResponseCache 在 Android Lollipop 中不起作用

    我一直在我的应用程序中成功使用 HttpResponseCache 但是当我的手机更新到 Lollipop 时 我意识到 HttpResponseCache 现在永远不会被 命中 总是执行网络请求 我已经确认 Lollipop 之前的 An
  • 如何在R光栅中获取网格周围的等高线?

    R中有一个栅格 如何绘制等高线around网格 不连接中心或其他任何东西 真正遵循网格的边界 具有某些值 或由某些掩码标识 以下示例显示如何获取值 0 6 的区域周围的等高线 如何执行相同操作 但线条遵循网格边界 该函数应该返回一个对象以添
  • 使用 Money gem 的表单选择设置货币

    我已经在这方面工作了好几个小时 但我无法弄清楚这一点 我愿意让用户根据他在表单中填写的价格选择相应的货币 我正在使用 Money Gem https github com RubyMoney money 所有值均已正确设置 但货币仅设置为其
  • 使用 JavaScript 重新加载页面的首选方法? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 您更喜欢哪种方式重新加载当前页面 使用按钮 1
  • 在 FlatList 上 React Native“keyboardDismissMode”

    是否有可能防止键盘在滚动时消失FlatList 使用 ScrollView 时 将属性 keyboardDismissMode 设置为 none 是解决此问题的方法 但这对我在 FlatList 中不起作用 我在一个自制组件 即 Stack
  • 如何删除由 start/end Document 方法添加的 StaxEventItemWriter 标记?

    如何删除由开始 结束文档方法添加的 StaxEventItemWriter 标记 当我生成 XML 文件时 它是默认添加的 所以请任何人告诉我如何删除默认根标签 Ex
  • dplyr 创建因子水平的合计百分比

    如何使用 dplyr 为每个州创建因子变量水平的比例 例如 我想添加一个变量来指示数据框中每个州内女性的百分比 gen data state lt rep c rep Idaho 10 rep Maine 10 2 student id l
  • size_t 和 unsigned int 之间的区别?

    我很困惑size t 我在互联网上搜索过 到处都提到了这一点size t是无符号类型 因此它只能表示非负值 我的第一个问题是 如果它只用来表示非负值 为什么我们不使用unsigned int代替size t 我的第二个问题是 是size t
  • SqlDependency.Start(connectionString) 每次都返回 false

    我设置了访问数据库的权限 use DbName GRANT SUBSCRIBE QUERY NOTIFICATIONS TO dbuser use DbName GRANT SELECT ON OBJECT schema tableName
  • w3c document.forms[0].fieldname 等效项

    我一直在使用 document forms 0 fieldname value 从表单中获取 javascript 中的值 但我想使用名称来引用该字段而不是 0 这些天以来等效的是什么
  • 在 MarkLogic 8 中调用具有来自其余端点的依赖项的 xquery 库

    我们正在从 MarkLogic 6 升级到 8 并且在调用库模块时遇到了一些问题 我们有 xquery 库模块 可以从自定义 REST 扩展和非 REST xquery 调用 马克逻辑公司文档表示 REST 端点可以使用通过新 ext 端点
  • 程序化表单提交

    我想抓取网页的内容 内容是在该网站上填写并提交表格后生成的 我已经阅读了如何抓取最终结果内容 网页 但如何以编程方式提交表单 我正在使用 python 并读到我可能需要获取带有表单的原始网页 解析它 获取表单参数 然后执行 X 有人能指出我
  • 如何在应用程序中将粤语设置为语音搜索语言?

    我当前的代码在使用 ZH ISO 代码表示普通话时工作正常 但不适用于粤语 这是下面的代码 Intent i new Intent RecognizerIntent ACTION RECOGNIZE SPEECH String myLang
  • 无法在 Javascript 中动态添加项目到 Owl Carousel

    我正在尝试动态地将项目添加到猫头鹰旋转木马 我是这样做的 HTML div class owl carousel lesson carousel div class item item logo div class product item
  • SpringBoot 中的 javax.validation.constraints.Email

    我有一个经过此验证的 bean Email message Email is not valid regexp a z0 9 a z0 9 x01 x08 x0b x0c x0e x1f x21 x23 x5b x5d x7f x01 x0
  • Spring @ResponseBody 返回 JSON,但缺少键

    我正在以 JSON 格式返回 SQL 查询的结果 结果正常 但缺少键 查询中指定的列 我是否必须将类与查询关联才能获取键名称 我不认为这是 Jackson 映射 因为当我显式使用它时 对象映射器而不是让 Spring 在 ResponseB
  • 来自表视图控制器的多个 Segues

    我有一个小型应用程序 它对初始表格视图使用多个部分布局 一个部分显示 Twitter 的最新趋势 另一部分显示 Twitter 的最新故事 当我单击趋势列表中的某个项目时 我会转换到一个新的表视图控制器 该控制器显示有关该趋势的最新推文 在
  • Bash 条件管道

    如果命令返回 true 如何通过管道传输命令的输出 function open TEMPFILE mktemp u if gpg2 quiet decrypt batch passphrase 2 1 2 gt TEMPFILE then
  • 与 jquery close() 等效的 JavaScript 是什么?

    我有以下代码 它是用 DOM API 而不是 jquery 编写的 我不知道为什么 它位于用于 jquery 表单验证的提交函数内 我需要更改 parentNode 部分 以便 最接近 而不是 parent 我不擅长 JavaScript
  • Nimbus 外观和感觉调整菜单栏的颜色

    我正在尝试调整 Nimbus 外观和感觉的颜色 但它只能部分工作 特别是我在调整菜单栏的颜色时遇到问题 这是一个运行示例 import java awt Color import java awt Dimension import java