JMenuBar и JMenu прозрачный

У меня проблемы с JMenuBar а также JMenu в нтебеях. Я просто хочу знать, могу ли я установить собственный цвет фона для JMenuBar и JMenu объекты внутри него? Я старался setBackgroundColor() метод и не работает! Я хочу установить белый или прозрачный цвет, и я тоже попробовал это:

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

и до сих пор такJMenuBar без стиля

и я хочу что-то подобное

пример

Я использую NetBeans, и когда я устанавливаю предварительный просмотр, JMenuBar устанавливает белый фон. JMenu Background White.

Но когда я запускаю программу, все тот же цвет

1 ответ

Это работает для меня, используя:

.setBackground(Color.RED) а также setOpaque(true)

Вам не нужно устанавливать opaque как true для JMenuBar и JMenuItem, потому что они имеют значение true как непрозрачное значение по умолчанию. Тем не менее, вы явно установили opaque как true для JMenu, поскольку его значение по умолчанию - false. Этот простой код показывает значения по умолчанию JMenuBar и JMenu и JMenuItem:

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    JMenu menu = new JMenu("My menu");
    menuBar.add(menu);

    JMenuItem item1 = new JMenuItem("My item");
    menu.add(item1);

    System.out.println(" " + menuBar.isOpaque() + ", " + menu.isOpaque() + ", " + item1.isOpaque());

и вы увидите в консоли: правда, ложь, правда. Таким образом, чтобы изменить фон JMenu, вы установили его непрозрачное значение как true.

Для вашего желаемого интерфейса здесь простой код:

public class TutoMenuBar extends JFrame {

    public TutoMenuBar(String nameWindow) {
        super(nameWindow);
        initUI();
    }

    private void initUI() {

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu testingJMenu = new JMenu("Testing");
        testingJMenu.setOpaque(true);
        testingJMenu.setBackground(Color.BLUE);
        menuBar.add(testingJMenu);

        JMenu otherJMenu = new JMenu("Other");
        otherJMenu.setOpaque(true);
        otherJMenu.setBackground(Color.GREEN);
        menuBar.add(otherJMenu);

        JMenuItem menu_item_1JMenuItem = new JMenuItem("Menu Item 1");
        menu_item_1JMenuItem.setBackground(new Color(251, 41, 255));
        testingJMenu.add(menu_item_1JMenuItem);

        JMenuItem menu_item_2JMenuItem = new JMenuItem("Menu Item 2");
        menu_item_2JMenuItem.setBackground(new Color(251, 41, 255));
        testingJMenu.add(menu_item_2JMenuItem);

        pack();
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            TutoMenuBar test = new TutoMenuBar("Test");
            test.setVisible(true);
        });
    }
}
Другие вопросы по тегам