更改背景和里面的JMenuBar和JMenu的对象的文本颜色(Change background a

2019-07-25 06:11发布

我如何设置自定义背景色JMenuBarJMenu里面对象? 我试图.setBackgroundColor和它不工作!

Answer 1:

创建扩展一个新类JMenuBar

public class BackgroundMenuBar extends JMenuBar {
    Color bgColor=Color.WHITE;

    public void setColor(Color color) {
        bgColor=color;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(bgColor);
        g2d.fillRect(0, 0, getWidth() - 1, getHeight() - 1);

    }
}

现在,你使用这个类来代替JMenuBar并设置背景色setColor()



Answer 2:

你可能会需要更改的菜单项,即不透明度:

JMenuItem item= new JMenuItem("Test");
item.setOpaque(true);
item.setBackground(Color.CYAN);

您也可以实现,全球使用UIManager ,例如:

UIManager.put("MenuItem.background", Color.CYAN);
UIManager.put("MenuItem.opaque", true);


Answer 3:

最简单的方法(我能想到的)是改变由使用默认值UIManager 。 这将影响所有的菜单栏和菜单项中的应用程序,虽然...

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestMenuBar {

    public static void main(String[] args) {
        new TestMenuBar();
    }

    public TestMenuBar() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException ex) {
                } catch (InstantiationException ex) {
                } catch (IllegalAccessException ex) {
                } catch (UnsupportedLookAndFeelException ex) {
                }

                UIManager.put("MenuBar.background", Color.RED);
                UIManager.put("Menu.background", Color.GREEN);
                UIManager.put("MenuItem.background", Color.MAGENTA);

                JMenu mnu = new JMenu("Testing");
                mnu.add("Menu Item 1");
                mnu.add("Menu Item 2");

                JMenuBar mb = new JMenuBar();
                mb.add(mnu);
                mb.add(new JMenu("Other"));

                JFrame frame = new JFrame("Test");
                frame.setJMenuBar(mb);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JPanel());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }

        });
    }

}


Answer 4:

矿只有当我改变了工作:

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

至:

    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

否则,颜色保持不变。



Answer 5:

简单的方法是.setBackground(Color.RED)setOpaque(true)

menubar.setBackground(Color.RED); menu.setBackground(Color.yellow); menubar.setOpaque(true); menu.setOpaque(true);

这会给你的选择的颜色的菜单栏和菜单两者。



文章来源: Change background and text color of JMenuBar and JMenu objects inside it