设置JMenuBar的背景颜色?

时间:2012-08-09 23:16:30

标签: java swing colors background jmenubar

相对简单,如何设置JMenuBar的背景颜色?

我试过了:

MenuBar m = new MenuBar() {

      void paintComponent(Graphics g) {

  Graphics2D g2 = (Graphics2D)g;
  g2.setBackground(Color.yellow);
  g2.fillRect(0, 0, getWidth(), getHeight());
}

但没什么'

2 个答案:

答案 0 :(得分:6)

嗯,首先,你所展示的不是JMenuBar,而是MenuBar,这是一个显着的差异。尝试使用JMenuBar并使用setBackground更改背景颜色

根据Vulcan的反馈更新

好的,在setBackground不起作用的情况下,这将是;)

public class MyMenuBar extends JMenuBar {

    @Override
    protected void paintComponent(Graphics g) {

        super.paintComponent(g);

        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.RED);
        g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

    }

}

答案 1 :(得分:6)

使用 MadProgrammer 的方法,您将获得两次绘制的菜单栏背景 - 一次是通过UI(例如,它可能是Windows上的渐变,需要一些时间来绘制),一次通过您的代码 paintComponent 方法(旧背景的顶部)。

最好根据BasicMenuBarUI替换菜单UI:

    menuBar.setUI ( new BasicMenuBarUI ()
    {
        public void paint ( Graphics g, JComponent c )
        {
            g.setColor ( Color.RED );
            g.fillRect ( 0, 0, c.getWidth (), c.getHeight () );
        }
    } );

您还可以为所有菜单栏全局设置该UI,这样您每次创建菜单栏时都不需要使用特定组件:

UIManager.put ( "MenuBarUI", MyMenuBarUI.class.getCanonicalName () );

这里的MyMenuBarUI类是您所有菜单栏的特定用户界面。