当前位置: 首页 > 面试题库 >

Nimbus外观调整菜单栏的颜色

孙阳旭
2023-03-14
问题内容

我正在尝试调整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 LookAnd Feel中调整菜单栏的颜色?

提前致谢


问题答案:

对于JMenuBar有使用画家,检查NimbusDefault#值

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

休息是由 trashgod +1



 类似资料:
  • 问题内容: 我想为应用程序中的所有JPanel使用不同的背景色。使用Nimbus外观时该如何做? 我遵循“ 更改颜色主题”来更改Nimbus外观中的组件的颜色。 它有时只是 随机地 起作用。如果在更改颜色之前设置,则仅通知 一次 。 这是一些测试代码: 问题答案:

  • 在Java Swing应用程序中,我正在尝试nimbus外观。它在JdesktopPane控件中看起来非常棒,但我希望我的所有桌面都有不同的颜色,但主题很好。 有没有办法改变灵气观感的背景颜色? 下面是应用nimbus外观的示例代码。

  • 顶部菜单栏中,设有文件、快捷代码、资源、工具、项目、视图和帮助控件,具体说明如下。 名称 说明 文件 可以控制新建项目、新建文件、保存和运行。文件支持.js、.css、.html和.json格式。 快捷代码 可直接将所需代码添加到所编辑的项目文件(光标所在位置)中。 资源 可打开工具栏中的相应面板,将提供的模型、园区、地图等资源加载到项目文件中。还可以查看并设置我的项目、我的园区和我的地图。参阅资

  • 左侧菜单栏包括图层、场景和底图。本章节中,我们将详细介绍菜单栏各功能的使用方法。 图层 图层的概念跟制图软件大致相同,可以理解为是堆叠在一起的透明纸。在 CityBuilder 中,通过图层可将数据文件加载到场景中,如城市建筑、道路、水系等。除了快速入门中介绍的加载公共数据以外,我们还可以上传本地的数据文件。 按下列步骤,将我的数据加载到图层中,并设置图层属性。 在左侧菜单栏中,点击图层右侧添加图

  • CampusBuilder 场景编辑器的顶部菜单栏设有7个基本功能项,包括文件、编辑、选择、工具、视角、插件和帮助。 文件 顶部菜单栏的文件控件包含以下功能: 可以打开本地 3D 场景文件; 将文件保存/另存为,在我的场景中可以看到保存后的场景,最后保存时的窗口图将作为场景的封面; 导入模型文件,支持的文件格式包括 .fbx, .obj, .3ds, .stl, .dae, .3d, .3mf 等

  •        包括开始菜单,在线地图菜单、操作菜单、分析菜单、三维场景菜单、视图菜单以及数据处理菜单等7个主菜单。