首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMenuBar和JMenu透明

JMenuBar和JMenu透明
EN

Stack Overflow用户
提问于 2017-08-04 23:06:50
回答 2查看 1K关注 0票数 0

我在Ntebeans中使用JMenuBarJMenu遇到了一些麻烦。我只想知道我可以为JMenuBar和其中的JMenu对象设置自定义背景颜色吗?我尝试了setBackgroundColor()方法,但它不起作用!我想要设置为白色或透明,我也尝试了这个:

代码语言:javascript
复制
menubar.setBackground(Color.RED);
menu.setBackground(Color.yellow);
menubar.setOpaque(true);
menu.setOpaque(true);

仍然是这样的

我想要这样的

我正在使用JMenu Background White,当我设置预览时,Netbeans的背景设置为白色Netbeans

但当我运行程序时,仍然是相同的same color

EN

回答 2

Stack Overflow用户

发布于 2017-08-04 23:31:17

它适用于我,使用:

.setBackground(Color.RED) setOpaque(true)

票数 0
EN

Stack Overflow用户

发布于 2019-05-06 04:32:35

您不需要将JMenuBar和JMenuItem的opaque设置为true,因为缺省情况下,它们的opaque值为true。但是,您已将JMenu的显式不透明设置为true,因为它的默认值为false。下面这段简单的代码向您展示了JMenuBar、JMenu和JMenuItem的默认值:

代码语言:javascript
复制
    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());

您将在控制台中看到: true、false、true。因此,要更改JMenu的背景,您需要将其不透明值设置为true。

对于你想要的图形用户界面,这里有一个简单的代码:

代码语言:javascript
复制
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);
        });
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45510141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档